子類可以擁有父類所有的非私有的屬性和方法
子類可以重寫父類的方法
父類不能使用子類的方法
子類可以直接添加其他方法叨吮,也可以重寫父類方法
重寫:重新實現(xiàn)從父類繼承下來的方法
a.完全重寫
直接重新實現(xiàn)父類的方法
b.保留父類實現(xiàn)的功能向族,再添加新功能
super().fun()
super().父類方法
對象和類調(diào)用方法的過程:先看當前類是否
存在這個方法莲绰,如果沒有,再從父類中找
class Animal(object):
number = 10
def __init__(self):
self.age = 0
self.color = ''
def eat(self):
print('eat')
@classmethod
def get_number(cls):
return cls.number
class Dog(Animal):
def look_after(self):
print('s')
# 完全重寫父類中的方法
# def eat(self):
# print('w')
# super()保留父類方法再重寫
def eat(self):
super().eat()
print('s')
@classmethod
def get_number(cls):
print(super().get_number())
if __name__ == '__main__':
dog1 = Dog()
dog1.eat()
Dog.get_number()
print(Animal.get_number())
對象屬性的繼承:是通過繼承init方法來繼承
class Person(object):
def __init__(self,name,age):
self.name = name
self.age =age
class Staff(Person):
# 添加對象屬性,重寫__init__方法
# 如果要保留父類對象屬性,用super(),
# 去調(diào)用父類的__init__方法
def __init__(self,name,age,salary):
super().__init__(name,age)
self.salary =salary
if __name__ == '__main__':
emp = Staff('s',22,'90K')
print(emp.name,emp.age,emp.salary)
s 22 90K
多態(tài):子類繼承父類的方法来农,可以對方法進行重寫,
一個方法就有多種形態(tài)(多態(tài)的表現(xiàn))
繼承產(chǎn)生多態(tài)
重載:一個類中可以有多個名字相同的方法崇堰,就叫重載
Python中不支持方法的重載
運算符的重載:(重新定義運算符運算的過程)
备图、<、+赶袄、-
大于小于符號只需要重載其中的一個揽涮,另外一個的結果,
直接是重載的結果取反
class Student:
def run(self, name):
print('%s在跑' % name)
class Student2:
def __init__(self, name='', age=0, height=0):
self.name = name
self.age = age
self.height = height
def __gt__(self, other):
# 比較對象1>對象2的時候是比較的他們的height屬性
return self.height > other.height
# return self.age > other.age
# return id(self) > id(other)
# 重載:<
def __lt__(self, other):
return self.age < other.age
# 重載: +
def __add__(self, other):
return self.age + other.age
# 重載: -
def __sub__(self, other):
return self.height - other.height
if __name__ == '__main__':
stu = Student()
stu.run('余婷')
stu1 = Student2('aa', 18, height=170)
stu2 = Student2('bb', 20, height=140)
if stu1 > stu2:
print('學生1大于學生2啊啊')
if stu1 < stu2:
print('學生1大于學生2')
else:
print('學生2小于學生1')
print(stu1 + stu2)
print(stu1-stu2)
print(100+200)
print('abc'+'abc')
python內(nèi)存管理原理
內(nèi)存中有兩個特殊的區(qū)域:棧饿肺,堆
棧:棧中的內(nèi)存是系統(tǒng)自動管理(內(nèi)存的開辟和內(nèi)存的釋放)
作用域結束內(nèi)存釋放
堆:堆中的內(nèi)存都是需要寫程序去開辟和釋放的
(Python中自動開辟和釋放)
當一個對象沒有引用的時候蒋困,對象對應的內(nèi)存空間就會被釋放
(引用計數(shù)機制)
引用:存儲對象地址的變量