Python從零開始學 Day05~面向對象
本文是上一篇文章的後續,詳情點擊該鏈接
類的定義和調用
class student:
#構造方法
def __init__(self,name,score):
self.name = name
self.score = score
def data(self):
print("姓名: ",self.name," 年齡: ",self.score)
s = student('劉伯溫',19)
s.data()
self好比C++,Java裏面的this
其他操作:
dir(obj)可以獲得對象的所有屬性、方法
obj.__dict__ 對象的屬性字典
pass 空語句
isinstance(對象,類型) 判斷“對象”是不是“指定類型”
靜態方法
“靜態方法”和在模塊中定義普通函數沒有區別,只不過“靜態方法”放到了“類的名字空間裏面”,需要通過“類調用”。
@staticmethod
class student:
#構造方法
def __init__(self,name,score):
self.name = name
self.score = score
def data(self):
print("姓名: ",self.name," 年齡: ",self.score)
@staticmethod
def show():
print("hello 我是靜態方法")
s = student('劉伯溫',19)
s.data()
student.show()
析構函數
和C++裏面的析構函數差不多
class student:
def __init__(self):
print("我是構造函數~")
def __del__(self):
print("我是析構函數~")
print("程序運行中")
s = student()
i = input("隨便輸入")
__call__方法和可調用對象(計算工資案例)
class SalaryAccount:
def __call__(self, salary):
yearSalary = salary * 12
daySalary = salary // 30
hourSalary = daySalary // 8
return dict(monthSalary=salary,yearSalary=yearSalary,daySalary=daySalary ,hourSalary=hourSalary)
s = SalaryAccount()
print(s(3000))
方法的動態性
class User:
def fun(self):
print("我要去運動")
def funS():
print("我要喫大餐")
User.fun = funS()
u = User()
u.fun
方法的私有公有性
通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他爲公有的(public)。
class Student:
def show(self): #公有方法
print("我是公有方法")
def __li(self): #私有方法
print("我是私有方法")
S = Student()
S.show()
@property裝飾器
@property 可以將一個方法的調用方式發成“屬性調用”
class Student:
@property
def number(self):
return 6666
s = Student()
print(s.number)
Get,Set方法
class Student:
def __init__(self,score):
self.score = score
def __init__(self):
pass
@property
def score(self): #如同get
return self.score
def score(self,score): #如同set
self.score = score
s = Student()
s.score(7)
print(s.score)
繼承
class Animal:
def ani(self):
print("這是個動物")
class Cat(Animal):
def ca(self):
print("我是個貓咪")
C = Cat()
C.ani()
object根類
dir()查看對象屬性
class Student:
def __init__(self,score):
self.score = score
def show(self):
print("學生成績是: ",self.score)
obj = object()
print(dir(obj))
S = Student(19)
print(dir(S))
多重繼承
class Cat:
def catrun(self):
print("小貓在跑")
class Dog:
def dogrun(self):
print("小狗在跑")
class Animal(Cat,Dog):
def __init__(self):
print("都是動物")
super().catrun()#super獲得類方法
A = Animal()
A.dogrun()
A.catrun()