首页 > 代码库 > python基础-面向对象

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

python基础-面向对象