python基础-面向对象
类:一类事物的抽象,比如汽车类
对象:类的一个实例,比如一台真实的宝马车
类的定义:class关键字
类的组成:方法\类变量\成员变量\局部变量
方法:也可以叫函数,但与函数不同,类方法必须包含参数self,且为第一个参数
类变量特点:定义在类里方法外,可以由类名直接调用,也可以有对象来调用
成员变量特点:由类的对象来调用,一般是self.开头来定义.可以类的不同方法中使用
局部变量:方法中的普通变量,仅可以在该方法内使用
构造方法和析构方法
__init__()初始化操作,每次生成一个新对象便会自动调用一次该方法.可选
__del__()删除清理操作.可选
一般来说python的垃圾回收机制会很好的处理,所以一般不需要使用__del__()方法
class User():#类的定义 age = 20 #类变量,定义在类里方法外 #init可以选,有初始化才写,没有初始化可以不写 ''' 为何必须在方法定义中包含形参self? 因为python调用这个__init__()方法来创建User实例时,将自动传入实参self。 每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用, 让实例能够访问类中的属性和方法。 ''' def __init__(self):#构造方法 self.name = "xiaoming"#成员变量 print("name=",self.name) def say(self):#类方法必须包含参数self,且为第一个参数 address = "China"#方法中的局部变量 print("address=",address) self.address = address#如果你想让变量可以在类中的方法间使用,就需要这样做 def cry(self): #print(address)#报错 print(self.address)#对应上面的 u = User()#u为类的对象 print("age=",u.age) #调用类变量 u.say() u.cry()
结果:
name= xiaoming
age= 20
address= China
China
静态方法:参数可以为空
class User1(): name_count = 0 #类变量 def __init__(self,name): self.name = name User1.name_count += 1 print(name + ",次数统计:",User1.name_count) def say(self): print("我是" + self.name) #静态方法,参数可以为空 @staticmethod def func1(): print("我是静态方法") u1 = User1("小明1号") u1.say() u2 = User1("小明2号") u2.say() User1.func1()
结果:
小明1号,次数统计: 1
我是小明1号
小明2号,次数统计: 2
我是小明2号
我是静态方法
练习:
定义一个员工类Employee
在创建类的时要求对员工的姓名和工资初始化
类中有两个一般方法,一个是打印员工数量,一个是打印员工的信息(姓名和工资)
class Employee: count = 0 def __init__(self,name,salary): self.name = name self.salary = salary Employee.count +=1 #类变量在方法中的使用 def print_employee_number(self): print("员工数量:",Employee.count) def print_employee_xinxi(self): print(self.name,self.salary) employee1 = Employee("xiaoming",5000) employee1.print_employee_number() employee1.print_employee_xinxi() employee2 = Employee("xiaoming1",6000) employee2.print_employee_number() employee2.print_employee_xinxi()
结果:
员工数量: 1
xiaoming 5000
员工数量: 2
xiaoming1 6000