今天看了《Python编程从入门到实战》一章中的一些知识点,对构造函数、析构函数、类变量、实例变量的理解进行一下 总结:
1、构造函数:__init__(self,name,age,sex), 这个方法就是构造函数,在实例化的时候自动调用。所有如果这个函数内有打印的方法,当kate实例出来的时候会打印里面的信息。
__init__
方法的第一个参数永远都是self
,表示创建实例本身,在__init__
方法内部,可以把各种属性绑定到self
,因为self
指向创建的实例本身。
有了__init__
方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__
方法匹配的参数,但self
不需要传,Python解释器自己会把实例变量传进去。
2、析构函数:__del__(self), 这个方法就是析构函数,是在实例被销毁时自动调用的。
3、类变量: country = 'China' , 类变量不需要实例,可以直接使用, 如line 14
4、实例变量: self.name = name, self.name 这种形式就是实例变量,需要实例化后才能使用, 如 line15就会报错,需要实例化line16的kate, 才能使用name, age, sex
可以自由地给一个实例变量绑定属性,比如,给实例kate绑定一个language属性。
kate.language = '中文' print(kate.language) #中文
和普通函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self
,并且,调用时,不用传递该参数。除此之外,类的方法和普通函数没有什么区别。比如school函数只需要传city就可以了。
kate.school('北京') #凯特在北京上学
下面是具体的代码段
class Person(object): country = 'China' #类变量,不需要实例化,可以直接用 def __init__(self,name,age,sex):#构造函数,实例化的使用自动调用 self.name = name #实例变量,必须实例化之后才能用,也叫成员变量 self.age = age self.sex =sex def say_my_country(self): print(self.country)#类变量可以在类里作为属性使用 def school(self,city): self.city = city print('%s在%s上学' %(self.name,self.city)) def __del__(self):#析构函数,实例销毁的时候自动调用 print('实例销毁的时候自动调用') print(Person.country)#类变量,不需要实例化,可以直接用 #print(Person.name)#实例变量,必须实例化之后才能用,AttributeError: type object 'Person' has no attribute 'name' kate = Person('凯特',18,'女') print(kate.name) print(kate.age) print(kate.sex) print(kate.country) #China kate.say_my_country() #China kate.language = '中文' print(kate.language) #中文 kate.school('北京') #凯特在北京上学