Python学习——面向对象(二)

落花浮王杯 提交于 2020-02-24 08:32:58

类变量:存在类中的变量,可以通过【类名.类变量名】的方式进行调用。也可以使用【self..类变量名】(self会先从本实例中找,如果本实例没有就去类中找)

类方法:存在类中的方法,可以通过【类名.类方法】的方式进行调用。使用@classmethod   def eat(cls):          cls代表类

    1、直接使用类名调用,不需要实例化

    2、可以使用类变量,cls.类变量

    3、实例对象也可以调用类方法:self.类方法

    4、类方法里面不可以有实例方法和属性

    @classmethod

    def eat(cls): cls代表类

静态方法:就是一个普通函数,定义在类中而已。  @staticmethod   静态方法()

    1、可以通过类名.静态方法名调用

    2、不能使用实例方法和属性

    3、不能使用类方法和属性

    4、实例化的对象可以调用静态方法。对象名.静态方法名

属性方法 :看起来像变量的函数。@property   def 方法名(self):

               1、本身是一个实例方法

     2、没有入参,只有self本来对象的一个参数

     3、使用方法:对象.属性方法。当变量使用,没有“()”

析构函数:在实例被销毁的时候执行,一般写关闭数据库和关闭文件等操作。释放内存

私有函数:在函数或者变量前面加__,就是私有变量。只能在类里面调用。比较安全

 

继承、封装和多态:python不支持多态

继承:目的是为了简化代码,减少重复代码

    #修改父类的方法

    在父类的基础上修改方法,要先调用父类的方法

    也可以使用supper().__init(参数)的方法。supper()自动找父类的方法,super()找到父类的同时,本类的self也被传递过去了

 

举个栗子:

class Myfather:                  #父类   hourse = 5                  #类属性   __name = 'Dany'             #私有属性   def __init__(self,secondname):  #构造函数      self.secondname = secondname      print('我是父亲的姓%s'%self.secondname)   def __del__(self):              #析构函数      print('我退休了')   def sing(self,sings):           #实例方法,私有变量只在本类中使用      print('我是%s%s,我会唱歌%s'%(self.__name,self.secondname,sings))  #调用私有属性__name      print(self.__hate('韭菜'))  #私有方法也只在本类使用   def __hate(self,thing):         #私有方法      print('不喜欢吃%s'%thing)   @classmethod               # 类方法   def earnmoney(cls):      print('挣钱,有%d套房子'%(cls.hourse))  #类方法可以代用类变量   @staticmethod   def smoking():             #静态方法      print('我会吸烟')   @property   def diy(self):             #属性方法      return print('我会发明各种小工具')class Myson(Myfather):           #子类继承父类   def __init__(self,name1,name2): ##在父类基础上修改函数      super().__init__(name1)      print('父亲的姓:%s,母亲的姓:%s'%(self.secondname,name2))      # self.earnmoney() #实例对象也可以通过self调用类方法son = Myson('xiao','cao') #调用子类的构造函数son.sing('祖国祖国我爱你')        #子类继承父类的实例方法son.diy                   #属性函数调用son.earnmoney()           #类方法在实例化以后也可以用son.smoking()             #静态方法可以通过实例对象来调用dady = Myfather('xiao')  #父类实例化,调用父类的构造函数dady.sing('喜欢你')      #Myfather.smoking()        #静态方法调用Myfather.earnmoney()      #类方法调用print('产业:',Myfather.hourse) #类变量调用

 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!