Ⅰ python如果一個父類已經實例化了,現在想新建一個子類,給父類的這一個實例添加兩個屬性,如何實現
class People(object):
def __init__(self, name, age):
self.name = name
self.age = age
class worker(People):
def __init__(self,name,age,salary):
super(worker,self).__init__(name,age)
self.salary = salary
tom = People("Tom", 22)
print type(tom).__name__
#not a safe way, but no new object
tom.__class__=worker
print type(tom).__name__
tom.salary = 250
print tom.salary
#safe way, but create a new object
workerTom = worker("Tom", 22, 200)
tom.__dict__ = workerTom.__dict__
print type(tom).__name__
print tom.salary
Ⅱ python3 類和實例的作用
Python調用其他類的方法時候要注意引用的時是靜態方法還是類方法。意思就是調用其它類的方法(不管是不是引用別的包,如果引用保證引用路徑正確,同時分清楚是import引用還是from……import引用的)。如果是引用類的靜態方法直接點取方法就可以了,例如:B.b.fun()。如果是類方法就要新建一個類的實例才能引用類的方法,例如:B.b().fun(),其實就是看這個類方法有沒有self(有的地方也用cls)這個參數。有的話就要通過類的實例引用,沒有的話就直接引用
Ⅲ python中類的實例對象的理解總結
9.3.3. 實例對象
現在我們可以用實例對象作什麼?實例對象唯一可用的操作就是屬性引用。有兩種有效的屬性名。
數據屬性 相當於 Smalltalk 中的「實例變數」或 C++ 中的「數據成員」。和局部變數一樣,數據屬性不需要聲明,第一次使用時它們就會生成。例如,如果 x 是前面創建的 MyClass 實例,下面這段代碼會列印出 16 而在堆棧中留下多餘的東西:
x.counter = 1
while x.counter < 10:
x.counter = x.counter * 2
print(x.counter)
del x.counter
另一種為實例對象所接受的引用屬性是 方法。方法是「屬於」一個對象的函數。(在 Python 中,方法不止是類實例所獨有:其它類型的對象也可有方法。例如,鏈表對象有 append,insert,remove,sort 等等方法。然而,在後面的介紹中,除非特別說明,我們提到的方法特指類方法)
實例對象的有效名稱依賴於它的類。按照定義,類中所有(用戶定義)的函數對象對應它的實例中的方法。所以在我們的例子中,x.f 是一個有效的方法引用,因為 MyClass.f 是一個函數。但 x.i 不是,因為 MyClass.i 不是函數。不過 x.f 和 MyClass.f 不同,它是一個 方法對象 ,不是一個函數對象。