這篇文章將為大家詳細(xì)講解有關(guān)Python中的類是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識(shí)有一定的了解。
成都創(chuàng)新互聯(lián)主營卡若網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app開發(fā)定制,卡若h5重慶小程序開發(fā)搭建,卡若網(wǎng)站營銷推廣歡迎卡若等地區(qū)企業(yè)咨詢
類(Class):
用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個(gè)對象所共有的屬性和方法。對象是類的實(shí)例。
類
定義和實(shí)例化
類的定義,使用class關(guān)鍵字
class Flower(object): pass
添加實(shí)例屬性值
class Flower(object): def __init__(self,name,color,height): #默認(rèn)值 self.name=name self.color=color self.height=height
類的實(shí)例化
class Flower(object): def __init__(self,name,color,height): self.name=name self.color=color self.height=height f=Flower('玫瑰','紅色',20) print(f.name) print(f.color) print(f.height) 輸出: >>玫瑰 >>紅色 >>20
實(shí)例屬性和類屬性
類沒有實(shí)例屬性時(shí)會(huì)調(diào)用類屬性
class Flower(object): height=20 def __init__(self,name,color): self.name=name self.color=color f=Flower('玫瑰','紅色') print(f.height) 輸出: >>20
實(shí)例屬性的優(yōu)先級(jí)高于類屬性
class Flower(object): height=20 def __init__(self,name,color,height): self.name=name self.color=color self.height=height f=Flower('玫瑰','紅色',10) print(f.height) 輸出: >>10
刪除實(shí)例屬性
class Flower(object): height=20 def __init__(self,name,color,height): self.name=name self.color=color self.height=height f=Flower('玫瑰','紅色',10) del f.height print(f.height) 輸出: >>20#由于此時(shí)實(shí)例屬性被刪除,自動(dòng)調(diào)用了類屬性height=20
訪問限制
私有屬性
偽私有屬性_attrname:可以訪問但是不要隨意訪問
私有屬性__attrname:一般不可以訪問
訪問和修改私有屬性
訪問私有屬性
class Student(object): def __init__(self,name,score): self.__name=name self.__score=score def get_name(self): return self.__name def get_score(self): return self.__score s=Student('Jack',88) #通過自定義方法來訪問私有屬性 print(s.get_name()) print(s.get_score()) #直接訪問私有屬性 print(s._Student__name) print(s._Student__score) 輸出: >>Jack >>88 >>Jack >>88 >>a
修改私有屬性
class Student(object): def __init__(self,name,score): self.__name=name self.__score=score def get_name(self,newname): self.__name=newname return self.__name def get_score(self,newscore): self.__score=newscore return self.__score s=Student('Jack',88) #通過自定義方法修改私有屬性 print(s.get_name('Peter')) print(s.get_score('85')) #直接修改私有屬性 s._Student__name='Mark' s._Student__score='86' print(s._Student__name) print(s._Student__score) 輸出: >>Peter >>85 >>Mark >>86
繼承和多態(tài)
獲取對象信息
type()函數(shù)獲取對象信息
判斷函數(shù)類型
import types def fn(): pass print(type(fn)==types.FunctionType)#判斷是否是自定義函數(shù) print(type(abs)==types.BuiltinFunctionType)#判斷是否是內(nèi)置函數(shù) print(type(lambda x: x)==types.LambdaType)#判斷是否是lambda函數(shù) print(type((x for x in range(10)))==types.GeneratorType)#判斷是否是生成器類型 輸出: >>True >>True >>True >>True
isinstance()函數(shù)獲取對象信息
判斷類對象
class Animal(object): pass class Dog(Animal): pass class Xiaohuang(Dog): pass a=Xiaohuang() b=Dog() c=Animal() print(isinstance(a,Dog))#Xiaohuang是否屬于Dog類 print(isinstance(b,Animal))#Dog是否屬于Animal類 print(isinstance(c,object))#Animal是否屬于object類 輸出: >>True >>True >>True
判斷基本類型數(shù)據(jù)
a=[1,2,3,4,5] print(isinstance(a,(list,dict)))#判斷a是否屬于列表或者字典類型 輸出: >>True
內(nèi)置方法的重寫
class myclass(): def __len__(self): return 10 def __repr__(self): return 'rewrite repr!' def __str__(self): return 'rewrite str!' a=myclass() print(len(a) print(repr(a)) print(str(a)) 輸出: >>10 >>rewrite repr! >>rewrite str!
定制屬性訪問
hasattr(m,’n’) m:實(shí)例 n:類里面的屬性 確定屬性是否存在
getattr(m,‘n’) m:實(shí)例 n:類里面的屬性 得到指定類屬性的值
setattr(m,’n’,x) m:實(shí)例 n:類里面的屬性 x:設(shè)置屬性的值 有則改無則添加
delattr(m,’n’) m:實(shí)例 n:類里面的屬性 刪除一個(gè)類屬性
實(shí)例屬性的優(yōu)先級(jí)高于類屬性
4.類的析構(gòu)(銷毀無用變量)
5.繼承 重寫
6.多繼承 重寫
在類中
super()可以調(diào)用父類里面的方法
self.方法()可以調(diào)用父類里面的方法
類中查詢相關(guān)信息
1、class 查看類名
格式: 實(shí)例.class
2、dict 查看全部屬性,返回屬性和屬性值鍵值對形式
格式:實(shí)例.dict
3、doc 查看對象文檔,即類中(用三個(gè)引號(hào)引起來的部分)
格式:類名.dict
4、bases 查看父類
格式:類名.base
5.mro 查看多繼承的情況下,子類調(diào)用父類方法時(shí),搜索順序
格式:子類名.mro 實(shí)例.class.mro
魔術(shù)方法:
str repr call init add
描述符
class Myattr():
def get(self,instance,owner):
print(“this is get”)
def set(self,instance,value):
print(“this is set”)
def delete(self,instance):
print(“this is delete”)
class Myclass():
attr=Myattr()
a=Myclass()
a.attr #訪問屬性來激活__get__方法
a.attr=1 #賦值來激活__set__方法
del a.attr #刪除來激活 __delete__方法
關(guān)于Python中的類是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。