python面向对象的方法类型,继承等

梦想的初衷 提交于 2020-02-24 08:31:07

析构函数

class My:    def __init__(self):        print('构造函数,类在实例化的时候执行')    def __del__(self):        print('析构函数,实例被销毁的时候执行')    def say(self):        print('say')m=My()m.say()

私有

类方法

1 不实例化,可以直接用类调用

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

3 实例化也可以通过self.xx调用类方法

4 类方法是不能用实例方法和实例变量的

class My:    name='holly'
#类方法    @classmethod#装饰器,不改变原来的函数,给函数增加新功能    def eat(cls):        print(cls.name)        print('吃饭')My.eat()m=My()m.eat()实例方法类里面正常定义的方法都叫实例方法(self)静态方法:就是一个普通的方法,只是放在了类里面而已不需要实例化直接用类名可以调用用不了实例方法,用不了实例变量用不了类方法,类变量
class My:
  def __init__(self):      print('构造函数,类在实例化的时候执行')
    #实例化方法    def cry(self):        print('cry')    # 静态方法    @staticmethod    def study():        print('study hard')My.study()

属性方法

看起来像变量的函数

1 实例方法

2不能有入参

3 用它的时候直接把他当作变量就可以了,不用加括号调用

4 他是获取函数的返回值

class My:    def __init__(self):        print('构造函数,类在实例化的时候执行')
    @property    def red_pag(self):        return 100m=My()print(m.red_pag)面向对象:继承 封装 多态(java中有,python中没有这个概念)继承:简化代码,减少重复代码,在父类方法的基础上修改,就是在子类中先调用一下父类的方法
class Restaurant():    def __init__(self,restaurant_name,cuisine_type):        self.restaurant_name=restaurant_name        self.cuisine_type=cuisine_type    def describe(self):        print('name '+self.restaurant_name,"cuisine's type"+self.cuisine_type)    def open(self):        print('xxxx')class Flavors():    def flavors(self,*info):        self.info=info        # print(self.info)class IcecreamStand(Restaurant):#继承    def __init__(self,restaurant_name,cuisine_type):        super().__init__(restaurant_name,cuisine_type)#调用父类(超类)init方法        self.flavors=Flavors()#将Flavors实例用作IcecreamStand类的属性ice=IcecreamStand('bing','ice')ice.flavors.flavors('apple','pear','peach')# res=Restaurant('dongbeicai','luandun')# res.describe()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!