class Dog:
    def __init__(self,name,age,salary):
                self.name = name self.age = age self.salary = salary#等号的左右的名称可以不同,左边是属性名,右边是形参名
       def bulk(self,voice)
                    print('%s is bulking,,,,%s' %s(self.name,voice))
       def __del__():
                print('我是析构函数')
 taidi = Dog(taidi,3,2300)

taidi.bulk()

 



 

一.类的存储与实例对象的存储

 

    类定义好后会为类开辟一块空间。

 

     实例化一个类后会将初始化的数据和对象名一并传入类中,并在类的外面开辟一块空间用于存数据。

 

     注意:初始化时会将对象当形参(self)传入类

 

                 实例对象不会将类中共同的方法或变量的存下来,而是通过self进行访问。

 

二.变量的分类

 

实例属性(静态属性)只对该实例对象有作用域

实例方法(动态属性)只对该实例对象有作用域

类变量     对所有的实例对象都有作用域,只存放在类里面

注意:当类变量与实例变量矛盾时,实例变量有效,通过实例改类变量时,是将类变量复制一份到该实例对象中 ,将复制后的进行修改。但list不一样,通过实例改类变量的list时就是在类中修改。

二.构造函数

 

 

 

    作用:实例化类时,进行初始化,并开辟一块空间。但不会将类中的方法都复制一边

 

             

 

   实例化类时构造函数会自动执行

 

     三.析构函数   但不能有参数,实例释放和销毁时自动执行,进行扫尾工作,如关闭数据库链接。

     四.私有属性,私有方法

        私有属性或方法名前加  __(双下划线)外部不能访问,但可以通过类中其他的方法访问。

         

   五.继承

     在构造一个类时将要继承的父类当做参数传入。

class  school_member(object):    #父类,object是基类,是新式类的写法
    def __init__(self,name,age,id):
           self.name=name
           self.age=age
           self.id=id
    def   enroll(self):     #注册函数
           print('welcom to %s"%self.name)



class  student(school_member):
     def __init__(self,name,age,id,money):
           #school_member.__init__(self,name,age,id)
             super(sudent,self).__init__(name,age,id)
             self.money=money
       

六.多继承

    多继承的顺序,分为广度优先和深度优先

Python3中新式类和经典类都是广度优先

Python2中   新式类是广度优先     经典类是深度优先

class  A(object):
      def __init__(self):
               print('A')

class   B(A):
      def __init__(self):
            print('B')

class   C(A):
       def __init__(self):
              print('C')
class   D(B,C):
       def __init__(self):
              print('D')

说明:B,C继承了A,而D继承B,C

广度优先:先在B中找有没有构造函数,没有再在C中找,最后在A中找

深度优先:在B中找没有再再A中找,后面依次类推。

多继承的顺序是按参数从左向右。并依次寻找是否有构造函数,有了就不执行后面的构造函数,前面构造的属性,可以在另一个父类中调用。

02-14 02:27