1. 程式人生 > 其它 >80070583類不存在_py類變數與成員變數

80070583類不存在_py類變數與成員變數

技術標籤:80070583類不存在

python類變數與成員變數_LDC,wx_公眾號【輕鬆學程式設計】-CSDN部落格​blog.csdn.net b2122475d47bf9b5fadea25c5b77314a.png
在類中宣告的變數我們稱之為類變數【靜態成員變數】,
在__init__()函式中宣告的變數,我們稱之為成員變數。
類的變數 由一個類的所有物件共享使用。只有一個類變數的拷貝
物件的變數 由類的每個物件/例項擁有。因此每個物件有自己對這個域的一份拷貝,即它們不是共享

類變數直接可以通過類名來呼叫。
1、若類變數與成員同時存在並且同名,使用物件來呼叫的時候,
獲取的結果是成員變數的值,使用類名來呼叫,獲取的是類變數的值。

2、若類變數存在,成員變數不存在,
使用物件來呼叫的時候,它首先尋找成員變數,如果成員變數不存在。則去尋找類變數。

3、若類變數不存在,成員變數存在:使用類名來呼叫,則會報錯

4、通過物件來修改類屬性的時候,只能作用到物件自己本身,作用不到類,
  通過類名來修改類屬性,則只對類變數的值進行修改
class Person(object):
    # 類變數
    name = "haha"
    age = "19"
    height = 170

    def __init__(self,name,age,weight):
        # 成員變數
        self.name = name
        self.age = age
        self.weight = weight

    def sayHeight(self):
        print(self.height)

per = Person("xiaoming",19,50)
print(per.name) # xiaoming
print(Person.name) # haha

#print(Person.weight) # 報錯
per.height = 190
print(per.height) # 190
print(Person.height) # 170
print('*********')
Person.height = 200
print(Person.height) # 200
print(per.height) # 190
per.sayHeight() # 190


#----------------------------------------------------------------------
class Person:
    population = 0 # 類變數

    def __init__(self, name):
        self.name = name #  成員的變數
        print('(Initializing %s)' % self.name)

        # When this person is created, he/she adds to the population
        Person.population += 1


    def sayHi(self):
        print('Hi, my name is %s.' % self.name)

    def howMany(self):
        if Person.population == 1:
            print('I am the only person here.')
        else:
            print('We have %d persons here.' % Person.population)

swaroop = Person('Swaroop')
swaroop.sayHi()
swaroop.howMany()

kalam = Person('Abdul Kalam')
kalam.sayHi()
kalam.howMany()

swaroop.sayHi()
swaroop.howMany()