#类名每个单词首字母大写,不要用"_"定义,class 类名():#__init__是构造方法,用来创建对象。#self是临时的对象,在类中调用属性。def__init__(self,name,age,...):
self.name = name
self.age = age
def 方法名(self,参数1,参数2,...):pass#析构函数 生命周期:从生到死def__del__(self):print("对象被销毁")#创建对象,
变量 = 类名(init方法中的属性值)
变量.name/变量.类中方法名()#调用所创建对象的属性值或这方法
在定义类注意事项:
self不能在类外访问类中的属性和方法。
init方法中的name可以和self.name不一样。
如果一个类中有两个构造方法或方法,下边的方法会覆盖上边的方法。
如果没有构造函数,系统会默认生成构造函数也叫缺省构造函数。
继承
classAnimal():def__init__(self,name,age,color,sex):
self.name = name
self.age = age
self.color = color
#属性名前加两个下划线表示私有属性。
self.__sex = sex
defeat(self):print("吃饭")defsleep(self):print("睡觉")#在方法名前加两个下划线表示私有方法"__"。def__play(self)print("玩游戏")#子类(父类),继承父类的属性和方法(除了构造方法,和父类私有属性和方法)classDog(Animal):def__init__(self,name,age,color):
Animal.__init__(self,name,age,color):#创建对象时,继承时父类和子类object都创建。
d = Dog("炫炫",5,"黑白花")print(d.name)#多继承classPerson():def__init__(self,name,age,sex,height,weight):
self.name = name
self.age = age
self.sex = sex
self.height = height
self.weight = weight
deflearn(self):print("学习")defwalk(self):print("走路")#当子类继承的父类属性和方法冲突时,写在前面的为主,如Animal,Person以Animal为主,为第一父类。classMonster(Person,Animal):def__init__(self,name,age,sex,height,weight,color,buff)#也可用super().__init__()继承
Animal.__init__(self,name,age,color)
Person.__init__(self,name,age,sex,height,weight,color)#子类自身的属性
self.buff = buff
#子类自己的方法 deffly(self):pass#重写,如果相同会覆盖,第一父类中的方法。deflearn(self):print("练功")
封装
classPerson():def__init__(self,name,age):
self.name = name
#只能在类中访问
self.__age = age
#程序外无法访问,需要用方法设置age的值defsetAge(self,value):
self.__age = value
#查看age的值defgetAge(self):return self.__age
p = Person("炫狗",1)
p.setAge(200)#设置年龄
p.getAge()#查询年龄
多态
defFruit():def__init__(self,name):
self.name = name
defApple(Fruit):def__init__(self,name):
Fruit.__init__(self,name)defBanana(Fruit):def__init__(self,name):
Fruit.__init__(self,name)defSaler():defbuy(self,fruit):print("买了",fruit.name)
s = Saler()# a = Apple("iPhone 7p")# fruit = a# a.name
s.buy(Apple("iPhone 7p"))
s.buy(Banana("大香蕉"))