heaven123

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

析构函数

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 100
m=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()

posted on 2019-08-01 18:56  heaven123  阅读(230)  评论(0编辑  收藏  举报

导航