python類的介紹 Python 類的介紹

2021-10-11 17:17:57 字數 3952 閱讀 5223

如何建立類:

class 類名:

pass

eg:class bar: # 定義乙個類

def foo(self, arg): # self 永遠是呼叫方法的物件,即中間人

print(self, self.name, self.age, arg)

obj = bar() # 使用 bar 類,建立乙個物件 obj

print(obj)

obj.name = 'klvchen'

obj.age = 28

obj.foo(666)

執行結果:

<__main__.bar object at> klvchen 28 666

建立方法

構造方法: __init__(self, arg)

obj = 類(引數)

普通方法:obj = 類(引數)

obj.普通方法名()

呼叫類中的方法

class foo:

def bar(self):

print('bar')

obj = foo() # 方法一,常用

obj.bar()

obj = foo() # 方法二

foo.bar(obj)

執行結果:

barbar

類中的字段

在類中分為普通欄位和靜態字段:

普通字段:儲存在物件中,執行只能通過物件訪問

靜態字段:儲存在類中,執行可以通過物件訪問,也可以通過類訪問

eg:class province:

country = 'china' # 靜態字段

def __init__(self, name):

self.name = name # 普通字段

print(province.country)

執行結果:

china

類中的三種方法:

1.普通方法:儲存在類中,由物件來呼叫,self 是物件

2.靜態方法:儲存在類中,由類直接呼叫

3.類方法 : 儲存在類中,由類直接呼叫, cls 是當前類

應用場景:

如果物件需要保持一些值,執行某功能時,需要使用物件中的值,選擇 普通方法

不需要任何物件中的值選擇 靜態方法

注:類在記憶體中只儲存乙份,可節省系統的記憶體

eg:class foo:

def bar(self):

print('bar')

@staticmethod # 靜態方法

def sta():

print('static method')

@staticmethod # 靜態方法,帶引數

def sta2(n):

print(n)

foo.sta()

foo.sta2(666)

執行結果:

static method

class foo:

@classmethod

def classmod(cls): # 類方法, cls 是當前類 foo

print(cls)

print('classmethod')

foo.classmod()

執行結果:

classmethod

物件導向三大特性之一: 封裝

eg:class person:

def __init__(self, name, age):

self.name = name

self.age = age

def show(self):

print('%s %d' %(self.name, self.age))

klvchen = person('陳', 28) # 生成物件時會自動執行 __init__() 方法

klvchen.show()

執行結果:

陳 28

物件導向三大特性之二: 繼承

將多個類共有的方法提取到父類中,子類僅需繼承父類而不必一一實現每個方法。

class father:

pass

class son(father):

pass

eg:class f:

def f1(self):

print('f.f1')

def f2(self):

print('f.f2')

class s(f):

def s1(self):

print('s.s1')

def f2(self):

super(s, self).f2() # 執行父類的 f2 方法

f.f2(self) # 執行父類的 f2 方法

obj = s()

obj.f1()

obj.s1()

obj.f2()

執行結果:

f.f1

s.s1

f.f2

f.f2

python 支援多繼承,規則如下:

1.左側優先

2.一條道做到最後

3.同一根時,根最後執行

eg:class f1:

def f(self):

print('f1.f')

class f2:

def f(self):

print('f2.f')

class s(f1, f2):

pass

obj = s()

obj.f()

執行結果:

f1.f

物件導向三大特性之三: 多型

python 原生就支援多型

新增 @property 後,訪問屬性時可以製造出和訪問字段完全相同的假象

class foo:

def bar(self):

print('bar')

@property

def per(self):

print('123')

return 1

@per.setter

def per(self, val):

print(val)

@per.deleter

def per(self):

print(888)

obj = foo()

r = obj.per

#print(r)

obj.per = 666

del obj.per

執行結果:

class foo:

def f1(self):

return 123

def f2(self, val):

print(val)

def f3(self):

print('del')

per = property(fget=f1, fset=f2, fdel=f3)

obj = foo()

ret = obj.per

print(ret)

obj.per = 6666

del obj.per

執行結果:

del物件後面加 () 直接呼叫__call__方法

class foo:

def __init__(self):

print('init')

def __call__(self, *args, **kwargs):

print('call')

obj = foo()

obj()

執行結果:

init

call

__dict__獲取物件所有的成員,以字典返回

class foo:

def __init__(self, name, age):

self.name = name

self.age = age

obj = foo('klvchen', 28)

d = obj.__dict__

print(d)

執行結果:

總體簡單介紹下python使用 python02

usr bin python coding utf 8 import sys import random 隨機數的產生 num1 random.randrange 1,100,2 print num1 現在隨機產生100個隨機數 arr total 0 for i in range 100 num ...

python類中包含類 徹底搞懂Python中的類

python類的定義 python 中定義乙個類使用 class 關鍵字實現,其基本語法格式如下 class 類名 多個 0 類屬性.多個 0 類方法.注意,無論是類屬性還是類方法,對於類來說,它們都不是必需的,可以有也可以沒有。另外,python 類中屬性和方法所在的位置是任 意的,即它們之間並沒...

python中類的介紹

1 類 class 用來描述具有相同的屬性和方法的物件的集合,它定義了該集合中每個物件所共有的屬性和方法。物件是類的例項。類變數 類變數在整個例項化的物件中是公用的。類變數定義在類中且在函式體之外。類變數通常不作為例項變數使用。資料成員 類變數或者例項變數,用於處理類及其例項物件的相關資料。例項變數...