析构函数
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()
来源:https://www.cnblogs.com/jingw/p/11284597.html