A-18-类和对象2
#coding=UTF-8#知识点总结
"""
1.继承机制可以减少代码量, 其中如果一个类A继承来自另一个类B, 则称A为B的子类, B为A的父类.继承可以使子类具有父类的各种方法和属性,
在继承时,可以重新定义某种属性或重写某种方法来覆盖父类原有的属性或方法,使其获得和父类不同的功能.
2.函数__init__返回为None,不能返回除了None以外的对象
3.函数super():在想要继承原有的__init__方法并进行修改时,在子类的 __init__ 内使用 super().__init__() 即可保留原有的内容
4.多重继承(钻石继承, 菱形继承): 可以同时继承多个类, 但有缺点, 尽量不要使用
5.组合:当继承不太适用时使用, 就是在类中把需要的类放进去实例化
6.对于修改类实例化对象中的变量时, 不会对类中的属性进行修改, 类中的属性就相当于静态变量,
当类被删除后, 类实例化对象依然可以调用方法, 因为删除的值是类的名字, 其中的方法还保留在内存中
5. __dict__(): 可以查看 类或类对象的实例化对象 的属性
6. __del__(self): 在创建的实例被删除后会被调用
"""
#1.继承
classParent:#创建类
defhello(self):
print("正在调用父类...")
classChild(Parent): #继承父类
pass
p = Parent()#实例化对象
p.hello() #访问类的方法(函数)
c = Child()
c.hello()
classChild(Parent):
defhello(self):
print("正在调用子类的方法...")
c = Child()
c.hello()
#2.继承
importrandom as r
classFish:
def__init__(self):
self.x = r.randint(0, 10)
self.y = r.randint(0, 10)
defmove(self):
self.x -= 1
print("我的位置是: ", self.x, self.y)
classGoldfish(Fish):
pass
classCarp(Fish):
pass
classSalmon(Fish):
pass
classShark(Fish):
def__init__(self):
super().__init__() #可保留_init原有的内容
self.hungry = True
defeat(self):
ifself.hungry:
print("吃吃吃")
self.hungry = False
else:
print("吃饱了")
a=Shark()
for i in range(3):
a.eat()#已实例化,self可以不用写
c=Goldfish()
for i in range(3):
c.move()
b=Fish()
for i in range(3):
b.move()
#3.组合
#助记:当遇到 水里有鱼,天上有鸟 这种情况时使用组合;当遇到 鲤鱼是鱼,相思鸟是鸟 这种情况时使用继承
class Turtle:
def __init__(self, x):
self.num = x
class Fish:
def __init__(self, x):
self.num = x
class Pool:
def __init__(self, x, y):
self.turtle = Turtle(x) # 组合乌龟类进来
self.fish = Fish(y) # 组合鱼类进来
def print_num(self):
print("水池里总共有乌龟 %d 只,小鱼 %d 条!" % (self.turtle.num, self.fish.num))
pool = Pool(1, 10)
pool.print_num()
#4.
class C:
num = 0 #num和count为类属性
def __init__(self):
self.x = 4 #x和y为实例属性
self.y = 5
C.count = 6
a=C()
print(a.x)
del C
print(a.x)
print(C.x)
页:
[1]