类内的函数共享给对象使用
1、為對象指定自己獨有的屬性
class OldboyStudent:
school="oldboy"
count=0
def __init__(self,x,y,z):#必須函數名為__init__,在調用類時自動觸發
self.name = x
self.age = y
self.sex = z
OldboyStudent.count+=1
def choose_course(self):
print("%s is choosing course" %self.name)
#調用類時發生兩件事
#發生兩件事,第一件事創造出一個空對象stu1#對象本質就是名稱空間,在點后面的名稱都稱為屬性
#自動觸發類中的__init__功能的執行,將stu1以及調用類括號內的參數一同傳入
stu1 = OldboyStudent("yf",18,"male")#因為默認傳入stu1所以只要傳入剩下參數即可
OldboyStudent.xx=2 #增加屬性,往類名稱空間內添加
print(stu1.xx) #從對象空間開始找,沒有就去類空間找,如果類也沒有則報錯
print(stu1.__dict__) #顯示出stu1內函數__init__自動觸發后的所有屬性
print(stu1.name) #選擇stu1內的某個屬性
print(stu1) #顯示出stui內存地址
stu2 = OldboyStudent("fxc",18,"female")
stu1.choose_course() #用sut1對象運行類中的函數,形成綁定的關系
# print(stu1.count) #不斷調用類產生對象,可以通過計數得到個數,需要注意的是默認計數的開始要放在類的名稱空間內
# print(stu2.count) #計數的開始而是在對象的__init__內,需要通過類名稱.count來達到與默認值的連接來計數
# 類名稱空間中定義的數據屬性和函數屬性都是共享給所有對象用的
# 對象名稱空間中定義的只有數據屬性,而且是對象所獨有的數據屬性
?
2、繼承與派生
'''
1、什么是繼承
繼承是一種新建類的方式,新建的類稱為子類,被繼承的類稱為父類
繼承的特性是:子類會遺傳父類的屬性
強調:繼承是類與類之間的關系
2、為什么用繼承
繼承的好處就是可以減少代碼的冗余
3、如何用繼承
在python中支持一個類同時繼承多個父類
在python3中
如果一個類沒有繼承任何類,那默認繼承object類
在python2中:
如果一個類沒有繼承任何類,不會繼承object類
新式類
但凡繼承了object的類以及該類的子類,都是新式類
經典類
沒有繼承object的類以及該類的子類,都是經典類
在python3中都是新式類,只有在python2中才區別新式類與經典類
新式類vs經典類?
'''
class king:
? ? school = "oldbay"
? ? def __init__(self,name,age):
? ? ? ? self.name=name
? ? ? ? self.age=age
class OldbayStudent(king):#在括號內繼承父類的內容為繼承
? ? def __init__(self,name,age,course):#在自己內的特征,新誕生的屬性為派生
? ? ? ? king.__init__(self,name,age)#king訪問函數屬性,為訪問普通函數
? ? ? ? self.course=course
? ? def select(self,course):
? ? ? ? print("%s 選擇課程 %s" %(self.name,self.course))
class OldbayTeather(king):
? ? def __init__(self,name,age,grade):
? ? ? ? king.__init__(self,name,age)
? ? ? ? self.grade=grade
? ? def system(self,stu_name,num):#提供學生名與打分
? ? ? ? print("%s 打分" %self.name)
? ? ? ? stu_name.score=num#學生名.名稱=打分分數,直接加到學生的對象名稱空間中,__init__內
user1=OldbayStudent("yf",18,"python")
user2=OldbayStudent("fxc",21,"python")
user3=OldbayStudent("zz",21,"linex")
user4=OldbayTeather("egon",18,10)
user4.system(user1,99)#運行教師的函數,傳入對應的學生名與分數,
# 分數會對應學生名進入學生的名稱空間對象中
print()
轉載于:https://www.cnblogs.com/yf18767106368/p/9229695.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的类内的函数共享给对象使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 提升我的工作效率(一)--常用的快捷键
- 下一篇: String类及其构造器和常用方法