1. 程式人生 > >14.7類的成員:字段,方法

14.7類的成員:字段,方法

Python 字段 方法 類的成員

類的成員:字段和方法在Python中,字段和方法都叫成員
類成員:
字段:
1.普通字段,保存在對象中,執行只能通過對象訪問。
2.靜態字段,保存在類中,執行可以通過類或者對象訪問,內存中只保留一份。
方法:
1.普通方法保存在類中,由對象調用,self指對象。
2.靜態方法,@staticmethod,保存在類中,self顏色變黑,不用必須寫self參數,用類直接調用,相當去直接寫一個函數。
br/>在Python中,字段和方法都叫成員
類成員:
字段:
1.普通字段,保存在對象中,執行只能通過對象訪問。
2.靜態字段,保存在類中,執行可以通過類或者對象訪問,內存中只保留一份。
方法:
1.普通方法保存在類中,由對象調用,self指對象。
2.靜態方法,@staticmethod,保存在類中,self顏色變黑,不用必須寫self參數,用類直接調用,相當去直接寫一個函數。

應用場景
1.希望在對象保存一些值,而調用方法需要用一些值----普通方法。
2.不需要任何對象中的值----靜態方法。

# -*-coding:utf-8 -*-
__author__ = ‘xiaojiaxin‘
__file_name__ = ‘面向對象實例練習‘

class Foo():
    #靜態變量,屬於類,在內存中只保存一份
    country="中國"

    def __init__(self,n):
        #普通字段
        self.name=n
    #普通方法
    def show(self):
        print(self.name)

obj1=Foo("wang")
obj1.show()
# wang
print(Foo.country)    #靜態字段可以通過訪問類直接訪問,它就存在類中
# 中國
# print(Foo.name)     #報錯,普通字段不能通過類直接訪問
# AttributeError: type object ‘Foo‘ has no attribute ‘name‘

print(obj1.country)   #靜態字段還可以通過對象直接訪問
# 中國
class fun():

def bar(self):
print("123")

@staticmethod    #加裝飾器變成靜態方法
def staticmd():
print("ok")

@classmethod    #類方法
def classmd(cls):
print(cls)
print("ok2")

fun.bar("obj2")  #與下面兩行等價
123
obj2=fun()
obj2.bar()
123

fun.staticmd()    #靜態方法可以用類直接調用
ok

fun.classmd()
<class ‘__main__.fun‘>
ok2

14.7類的成員:字段,方法