fl军哥

导航

 

今天看了《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('北京') #凯特在北京上学

 

posted on 2020-02-06 17:28  信1705-2张小军  阅读(115)  评论(0编辑  收藏  举报