class annimal(object):
def __init__(self,name,age=0):
self.name = name # 在这定义成员变量
self.age = age
self.public=11
self._private=63#私有属性
print("我是annimal")
def eat(self):
print("annimal eat")
def special(self):
print("我是独有的方法"+self.name)
def __del__(self):
print("annima销毁了")
def _private(self):#私有方法
print("我是私有方法")
class Dog(annimal):
def __init__(self,name,age=0):#self隐藏的,后面要写参数时需要self写出来,这是初始化函数
super().__init__(name,age)#初始化父类
print("我是dog")
def eat(self):
print(self.name+"吃骨头")#成员变量的复用
super().eat()#调用父类的方法
def __str__(self):#对对象输出时打印return的语句,不然打印的是地址
return "我被打印了"
def __del__(self):
print(self.name+"自动销毁了")#对象回收时调用
mydog=Dog("旺财",3)
print(mydog.name)#直接获得成员变量
mydog.eat()
print(mydog)
mydog.special()
print(mydog.public)
#多继承
class A():
def a(self):
print("我是A")
class B():
def b(self):
print("我是b")
pass
class C(A,B):
pass
c=C()
c.a()
#在一对象调用另一对象,以及多态的实现
class dog():
def __init__(self,name):
self.name=name
def play(self):
print("一般狗玩耍")
class xiaotianquan(dog):
def play(self):
print("会咆哮")
class person():
def __init__(self,name):
self.name=name
self.dog=0
def playwithdog(self,dog):#直接传对象
print(dog.name)
def playwithdog1(self):
self.dog.play()
xiaoming=person("小明")
dog1=dog("狗爹")
xiao=xiaotianquan("旺财")
xiao1=xiaotianquan("小黑")
xiaoming.playwithdog(xiao)
xiaoming.playwithdog(dog1)#多态的实现
xiaoming.dog=xiao1
xiaoming.playwithdog1()
"""
1.将对象传入另一对象的参数中,直接从方法入口进入
2.另一种是初始化时将调用对象看成成员变量self.dog=0,默认赋值。下面需要调用他得方法时直接用
"""
#类属性,放在方法之外
class Tool():
count=0#类属性
def __init__(self):
Tool.count+=1
t1=Tool()
t2=Tool()
t3=Tool()
print(Tool.count)
#类方法
class Tool1():
count=0#类属性
@classmethod#类方法
def coutt(cls):
print(cls.count)
@staticmethod
def static():#不要self
print("我是静态方法")
def __init__(self):
Tool1.count += 1
t11=Tool1()
t21=Tool1()
t31=Tool1()
Tool1.coutt()
Tool1.static()