日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中静态方法可以访问对象变量_python 面向对象-实例变量、类变量、实例方法、类方法、静态方法...

發(fā)布時間:2023/12/19 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中静态方法可以访问对象变量_python 面向对象-实例变量、类变量、实例方法、类方法、静态方法... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

需要搞清楚的是,

實例方法與類方法是什么?類變量和實例變量又是什么?

類方法中如何訪問類變量、類方法要如何調用?當然

實例方法中如何訪問類變量?能

實例方法訪問實例變量,實例方法如何被調用?當然

類方法中能否訪問實例變量?不能

對象調用類方法?能

靜態(tài)方法是什么?裝飾器:@staticmethod

靜態(tài)方法中如何訪問類變量和實例變臉、靜態(tài)方法如何調用?靜態(tài)方法可以訪問類變量、不能訪問實例變量,靜態(tài)方法可以用類名訪問,也可以用實例(對象)訪問

1、實例方法與類方法

實例方法:defdo_homework(self):類方法:def plus_sum(cls):

類變量:

name = ""

age = 0

sum1 = 1

實例變量:self.name

self.age

注意:決定一個方法是類方法還是實例方法的決定性因素是@classmethod裝飾器,跟入?yún)ls沒關系。我們的self 可以用cls 代替,也可以用其他入?yún)⒚妗?/p>

#coding=utf-8

classStudent():

name= ""age=0

sum1= 1

def __init__(self,name,age): #構造函數(shù)

self.name =name

self.age=agedefdo_homework(self):#實例方法print(self.name +"do homework")

@classmethoddefplus_sum(cls):pass

2、類方法如何訪問類變量;類方法如何調用

#coding=utf-8

classStudent():

name= ""age=0

sum=0def __init__(self,name,age): #構造函數(shù)

self.name =name

self.age=agedef do_homework(self):#實例方法

print(self.name +"do homework")

@classmethoddef plus_sum(cls):#類方法

cls.sum+=1#類方法訪問類變量

print(cls.sum)

student1= Student("a",18)

Student.plus_sum()#類方法調用,用類名調用類方法

student2 = Student("b",19)

Student.plus_sum()

student3= Student("c",20)

Student.plus_sum()#[Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test6.py"#1#2#3

3、實例方法訪問類變量

直接訪問sum1,報錯

#coding=utf-8

classStudent():

name= ""age=0

sum1=0def __init__(self,name,age): #構造函數(shù)

self.name =name

self.age=ageprint(sum1)#直接訪問,報錯defdo_homework(self):print(self.name +"do homework")

student1= Student("ansonw",26)

student1.do_homework()print(Student.__dict__)#Project/python_ToolCodes/test6.py"#Traceback (most recent call last):#File "/Users/anson/Documents/Project/python_ToolCodes/test6.py", line 15, in #student1 = Student("ansonw",26)#File "/Users/anson/Documents/Project/python_ToolCodes/test6.py", line 10, in __init__#print(sum1)#NameError: global name 'sum1' is not defined

需要怎么訪問呢:在類方法中,訪問類變量,需要 采用內置變量__class__ 和關鍵字print(self.__class__.sum1)或者是print(self.sum1) 都可以訪問,只是我認為,后面一種訪問方法,是用當前對象訪問的對象屬性,不是類變量;__class__ 代指當前類

#coding=utf-8

classStudent():

name= ""age=0

sum1=0def __init__(self,name,age): #構造函數(shù)

self.name =name

self.age=age#print(sum1)

print(self.__class__.sum1)#正確的訪問方式defdo_homework(self):print(self.name +"do homework")#student1 = Student("ansonw",26)#student1.do_homework()

print(Student.__dict__)#[Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test6.py"#0#ansonwdo homework#{'__module__': '__main__', 'do_homework': , 'name': '', 'age': 0, 'sum1': 0, '__doc__': None, '__init__': }

4、實例方法訪問實例變量,實例方法如何被調用?

#coding=utf-8

classStudent():

name= ""age=0

sum=0def __init__(self,name,age): #構造函數(shù)

self.name =name#實例方法訪問實例變量

self.age=agedef do_homework(self):#實例方法

print("name:"+self.name)#實例方法訪問實例變量print("this is a object function")

@classmethoddef plus_sum(cls):#類方法

cls.sum+=1

print(cls.sum)print(self.name)

@staticmethoddefadd(x,y):print(x+y)print("this is a static method")

student1= Student("anson",19)

student1.do_homework()#實例方法被調用(被對象調用)#[Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test6.py"#name:anson#this is a object function

5、類方法中能否訪問實例變量?

#coding=utf-8

classStudent():

name= ""age=0

sum=0def __init__(self,name,age): #構造函數(shù)

self.name =name

self.age=agedef do_homework(self):#實例方法

print(self.name +"do homework")

@classmethoddef plus_sum(cls):#類方法

cls.sum+=1

print(cls.sum)print(self.name)

@staticmethoddefadd(x,y):print(x+y)print("this is a static method")

student1= Student("anson",19)

student1.plus_sum()

Student.plus_sum()

報錯

[Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test6.py"

1Traceback (most recent call last):

File"/Users/anson/Documents/Project/python_ToolCodes/test6.py", line 25, in student1.plus_sum()

File"/Users/anson/Documents/Project/python_ToolCodes/test6.py", line 16, inplus_sumprint(self.name)

NameError:global name 'self' is not defined

6、對象調用類方法:

student1.plus_sum()

雖然可以,但是,最好還是不要,因為不倫不類的

#coding=utf-8

classStudent():

name= ""age=0

sum=0def __init__(self,name,age): #構造函數(shù)

self.name =name

self.age=agedef do_homework(self):#實例方法

print(self.name +"do homework")

@classmethoddef plus_sum(cls):#類方法

cls.sum+=1

print(cls.sum)

student1= Student("a",18)

student1.plus_sum()

Student.plus_sum()

student2= Student("b",19)

Student.plus_sum()

student3= Student("c",20)

Student.plus_sum()

7、靜態(tài)方法怎么定義&8、靜態(tài)方法如何訪問類變量、實例變量、靜態(tài)方法如何被調用

同理,運用裝飾器:@staticmethod

#coding=utf-8

classStudent():

name= ""age=0

sum=0def __init__(self,name,age): #構造函數(shù)

self.name =name

self.age=agedef do_homework(self):#實例方法

print(self.name +"do homework")

@classmethoddef plus_sum(cls):#類方法

cls.sum+=1

print(cls.sum)

@staticmethoddefadd(x,y)pass

(1)靜態(tài)方法訪問類變量:

#coding=utf-8

classStudent():

name= ""age=0

sum=0def __init__(self,name,age): #構造函數(shù)

self.name =name

self.age=agedef do_homework(self):#實例方法

print(self.name +"do homework")

@classmethoddef plus_sum(cls):#類方法

cls.sum+=1

print(cls.sum)

@staticmethoddefadd(x,y)print(Student.sum)#靜態(tài)方法訪問類變量print("this is a static method")

調用靜態(tài)方法:(1)可以用類名調用、(2)可以用實例來調用

#coding=utf-8

classStudent():

name= ""age=0

sum=0def __init__(self,name,age): #構造函數(shù)

self.name =name

self.age=agedef do_homework(self):#實例方法

print(self.name +"do homework")

@classmethoddef plus_sum(cls):#類方法

cls.sum+=1

print(cls.sum)

@staticmethoddefadd(x,y):print(Student.sum)#靜態(tài)方法訪問類變量

print("this is a static method")

Student.add(1,2)#(1)可以用類名調用

student1= Student("anson",19)

student1.add(1,2)#(2)可以用實例來調用#[Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test6.py"#0#this is a static method#0#this is a static method

靜態(tài)方法訪問實例變量

#coding=utf-8

classStudent():

name= ""age=0

sum=0def __init__(self,name,age): #構造函數(shù)

self.name =name

self.age=agedef do_homework(self):#實例方法

print(self.name +"do homework")

@classmethoddef plus_sum(cls):#類方法

cls.sum+=1

print(cls.sum)

@staticmethoddefadd(x,y):#print(Student.sum)#靜態(tài)方法訪問類變量

print(self.name)print("this is a static method")

Student.add(1,2)

student1= Student("anson",19)

student1.add(1,2)

報錯

#[Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test6.py"#Traceback (most recent call last):#File "/Users/anson/Documents/Project/python_ToolCodes/test6.py", line 22, in #Student.add(1,2)#File "/Users/anson/Documents/Project/python_ToolCodes/test6.py", line 19, in add#print(self.name)#NameError: global name 'self' is not defined

總結

以上是生活随笔為你收集整理的python中静态方法可以访问对象变量_python 面向对象-实例变量、类变量、实例方法、类方法、静态方法...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。