# class MyClass:
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、雅安服務(wù)器托管、營(yíng)銷軟件、網(wǎng)站建設(shè)、霸州網(wǎng)站維護(hù)、網(wǎng)站推廣。
# """A example class"""
# age = 300
# def __init__(self,name,age):
# self.name = name
# self.age = age
# def showage(self):
# print("{}is a student{}".format(self.name,self.age))
# tom = MyClass("lijiabin",18) #實(shí)例化 tom是實(shí)例
#
# print(tom.age,tom.name) ##tom.age是實(shí)例的變量
# print(MyClass.age)
# tom.showage() #實(shí)例化后每個(gè)實(shí)例可以享用對(duì)象的方法 類實(shí)例化后,得到一個(gè)實(shí)例對(duì)象,實(shí)例對(duì)象會(huì)綁定方法,調(diào)用方法時(shí)采用jerry.showage()的方式。
#通俗的說(shuō)就是 實(shí)例在調(diào)用類的方法時(shí)候 自身的屬性特點(diǎn)也會(huì)一起帶著!?。。。。。。。。。?/p>
#實(shí)例變量和類變量
##tom.age是實(shí)例的變量
#實(shí)例變量是每一個(gè)實(shí)例自己的變量,是自己獨(dú)有的;類變量是類的變量,是類的所有實(shí)例共享的屬性和方法
# 特殊屬性 含義
# __name__ 對(duì)象名
# __class__ 對(duì)象的類型
# __dict__ 對(duì)象的屬性的字典
# print(MyClass.__name__)
# print(MyClass.__class__)
# print(type(MyClass)) ##等價(jià)于.__class__
# print(MyClass.__dict__.items()) ##__dict__返回一個(gè)字典
# print("++++++++++++++++++++++++++")
# tom = MyClass("tp",19)
# print(tom.__class__)
# print(tom.__dict__) ##實(shí)例的字典和屬性 通俗的講就是tom屬于人類 tom的屬性在自己的×××上
# print(type(tom.__class__.__name__))#tom的類的名字 就是一個(gè)連環(huán)拼接,返回一個(gè)字符串
#
#
#
# class Person:
# age = 3
# height = 170
# def __init__(self, name, age=18):
# self.name = name
# self.age = age
# tom = Person('Tom') # 實(shí)例化、初始化 ¥¥¥¥¥¥¥¥每一個(gè)個(gè)體調(diào)用的時(shí)候必須先初始化
# jerry = Person('Jerry', 20)
# Person.age = 30
# print(Person.age, tom.age, jerry.age) # 輸出什么結(jié)果
#
# print(Person.height, tom.height, jerry.height) # 輸出什么結(jié)果
# jerry.height = 175 ###給個(gè)體增加屬性 可以在個(gè)體的字典里查到
# print(Person.height, tom.height, jerry.height) # 輸出什么結(jié)果
# # tom.height += 10
# # print(Person.height, tom.height, jerry.height) # 輸出什么結(jié)果
# # Person.height += 15
# # print(Person.height, tom.height, jerry.height) # 輸出什么結(jié)果
# Person.weight = 70
# print(Person.weight, tom.weight, jerry.weight) # 輸出什么結(jié)果
# # print(tom.__dict__['height'])
# print(tom.weight) # 可以嗎
# 指的是實(shí)例使用 .點(diǎn)號(hào) 來(lái)訪問(wèn)屬性,會(huì)先找自己的 __dict__ ,如果沒有,然后通過(guò)屬性 __class__ 找到自己的
# 類,再去類的 __dict__ 中找
# 注意,如果實(shí)例使用 __dict__[變量名] 訪問(wèn)變量,將不會(huì)按照上面的查找順序找變量了,這是指明使用字典的key
# 查找,不是屬性查找。
#給一個(gè)類增加一個(gè)屬性可以寫入 也可以通過(guò)之前學(xué)過(guò)的裝飾器來(lái)完成 想裝飾器的作用就是給一個(gè)函數(shù)加一個(gè)發(fā)卡 包裝一下這個(gè)函數(shù)
# 注意書寫等價(jià)式
# def decorate(name): #增加姓名
# def inner(cls): #class
# cls.Name = name
# return cls
# return inner
#
# @decorate("tom") # Person = decorate("tom")(Person)-> inner(Person)
# class Person:
# Age = 11
#
# print(Person.__dict__)
#
#類方法
# class Person:
# @classmethod #
# def class_method(cls): # cls是什么 是類的方法
# print('class = {0.__name__} ({0})'.format(cls))
# cls.HEIGHT = 170
#1. 在類定義中,使用@classmethod裝飾器修飾的方法
# 2. 必須至少有一個(gè)參數(shù),且第一個(gè)參數(shù)留給了cls,cls指代調(diào)用者即類對(duì)象自身
# 3. cls這個(gè)標(biāo)識(shí)符可以是任意合法名稱,但是為了易讀,請(qǐng)不要修改
# 4. 通過(guò)cls可以直接操作類的屬性
#
# Person.class_method()
# print(Person.__dict__)
# 類方法的調(diào)用
# class Person:
# def normal_method():
# print('normal')
# def method(self):
# print("{}'s method".format(self))
# @classmethod #類方法 給類定義的屬性
# def class_method(cls): # cls是什么
# print('class = {0.__name__} ({0})'.format(cls))
# cls.HEIGHT = 170
# @staticmethod #靜態(tài)方法 無(wú)需增加參數(shù) 靜態(tài)方法,只是表明這個(gè)方法屬于這個(gè)名詞空間。函數(shù)歸在一起,方便組織管理
# def static_methd():
# print('Person.HEIGHT')
# print('~~~~類訪問(wèn)')
# print(1,Person.normal_method()) # 可以嗎
# print(2, Person.method()) # 可以嗎 類中的方法是給實(shí)例準(zhǔn)備的 要穿self才能用 通俗的說(shuō)就是人類不能去用個(gè)體戶的功能,他是每個(gè)個(gè)體獨(dú)有的 要是人類能看 所有個(gè)體就都能看 有違邏輯
# print(3, Person.class_method()) # 可以嗎
# print(4, Person.static_methd()) # 可以嗎 keyi
# print(Person.__dict__)
# print('~~~~實(shí)例訪問(wèn)')
# print('tom----')
# tom = Person()
# # print(1, tom.normal_method()) # 可以嗎 不可以 實(shí)例必須給定參數(shù) 否則不能調(diào)用
# print(2, tom.method()) # 可以嗎
# print(3, tom.class_method()) # 可以嗎?
# print(4, tom.static_methd()) # 可以嗎
# print('jerry----')
# jerry = Person()
# # print(1, jerry.normal_method()) # 可以嗎
# print(2, jerry.method()) # 可以嗎
# print(3, jerry.class_method()) # 可以嗎?
# print(4, jerry.static_methd()) # 可以嗎
# 總結(jié):
# 類除了普通方法都可以調(diào)用,普通方法需要對(duì)象的實(shí)例作為第一參數(shù)。
# 實(shí)例可以調(diào)用所有類中定義的方法(包括類方法、靜態(tài)方法),普通方法傳入實(shí)例自身,靜態(tài)方法和類方法需要找
# 到實(shí)例的類。
# 通過(guò)方法控制實(shí)例的屬性 可以學(xué)習(xí)一下
# class Person:
# def __init__(self, name, age=18):
# self.name = name
# self.age = age
# def growup(self, i=1):
# if i > 0 and i < 150: # 控制邏輯
# self.age += i
# p1 = Person('tom')
# p1.growup(20) # 正常的范圍
# print(p1.age)
# p1.age = 160 # 超過(guò)了范圍,并繞過(guò)了控制邏輯
# print(p1.age)
# 補(bǔ)丁
# 可以通過(guò)修改或者替換類的成員。使用者調(diào)用的方式?jīng)]有改變,但是,類提供的功能可能已經(jīng)改變了。
# 猴子補(bǔ)?。∕onkey Patch):
# 在運(yùn)行時(shí),對(duì)屬性、方法、函數(shù)等進(jìn)行動(dòng)態(tài)替換。
# 其目的往往是為了通過(guò)替換、修改來(lái)增強(qiáng)、擴(kuò)展原有代碼的能力。
# 黑魔法,慎用。
分享名稱:類的基本使用
網(wǎng)站網(wǎng)址:http://muchs.cn/article10/jehjgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、做網(wǎng)站、標(biāo)簽優(yōu)化、企業(yè)建站、企業(yè)網(wǎng)站制作、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)