classDog:
def__init__(self):
#私有屬性,以雙下劃線開頭,這樣就沒法以點的形式訪問了
#這個屬性只能用self.來訪問,不能用dog.訪問
self.__age =10
self.name ="shit"
defget_age(self):
returnself.__age
defset_age(self,age):
self.__age = age
defwant_fuck(self,money):
ifmoney >200:
self.__fuck()
else:
print("fuck yourself")
def__fuck(self):
"""私有方法,同樣以雙下劃線開頭"""
print("this is a private func,fuck you")
def__del__(self):
"""魔術方法,對象被真正銷毀之前,真正的銷毀才會回調這個,包括手動或者系統銷毀"""
print("dog is dead")
def__str__(self):
return"live dog"
importtime
dog = Dog()
dog.set_age(44)
#調用私有變量
print(dog.get_age())
print(dog.name)
#調用私有方法
dog.want_fuck(300)
dog1 = dog
#實測,這個方法會刪除對象,但是如果有多個引用,它只會刪除某個引用,而不是真正銷毀對象
# del dog
# time.sleep(5)
# print(dog)
importsys
#計算某對象的引用個數,但是它本身也會使引用個數加1
count = sys.getrefcount(dog1)
print(count)