❶ python中的類為什麼要實例化為一個對象才能使用
打個比方:
class 人類(object):
def __init__(self,性別,年齡,姓名等等):
self.性別=性別
self.年齡=年齡
self.姓名=姓名
def 說話(self,要說的話):
print(要說的話)
......
小明=人類(男,3歲,小明)
小明.說話('你好!')
類就好比是一類事物的抽象,是一個模板,擁有這一類事物的屬性和功能。但是對於「人類」這個類來說,每個人的屬性和要做的事又是不一樣的,所以需要實例化,實例對象就是「人類」這個類的具體對象,後續就通過「小明」這個實例對象進行操作。😂
❷ python類的實例化問題
你沒有理解類變數和實例變數之間的關系。
第一個例子裡面init中append是對類變數的操作。因此實例談輪明對象newmen1/2並沒有自己的變數a,訪問的都桐嫌是類變數。
這時你如果顯示類變數,
print Men.a,newmen1.a,newmen2.a都是一樣的。指向同一變數。
第二個例子中的init生成了對象自己的變數a,注意'='! 當實例對象調用init時,每個實例對象都擁有了自己的變數a,你再也無法再通過實含告例對象來訪問到類變數了。事實上這種寫法是很不好的。
這時你可以再一次顯示類變數,
print Men.a,newmen1.a,newmen2
>> 0 1 2
如果你希望所有對象共用類變數,你可以寫
class Men:
a=0
def __init__(self,b):
Men.a=b
def sayHi(self):
print'Hello,my name is',Men.a
這樣反而清晰,不要把實例對象公有的變數用self來表示。只會把你自己搞暈。
❸ 在調用一些Python里的函數的時候 為什麼有些函數需要實例化有些不需要
如果一個方法是靜態方法或類晌帆方法,那麼,可以直接調用。
如果一個方法不是靜態的,那麼,它會需要self來訪問實例中的某些屬性,那麼就只能在實宴此雹例上調用。
你給出的代碼中,tensor_trans = transforms.ToTensor()這一句,實際上只是簡化引用,並沒有實例化transforms。
作為示例:
class MyUtil(object):
....@staticmethod
....def fn1():
........return 'a'
....def fn2(self):
........return 'b'
對方法fn1,扒配我們可以直接調用:
x = MyUtil.fn1()
但對於fn2,則只能實例化後調用:
util=MyUtil()
x = util.fn2()
當然,對於fn1,也可以在實例上調用:
util=MyUtil()
x = util.fn1()
❹ Python實例化一個對象
第一個socket是包名
❺ python 如何得到類的所有實例
importgc
classDog(object):
def__init__(self,name):
self.name=name
dahuang=Dog('1')
xiao=Dog('2')
forobjingc.get_objects():
ifisinstance(obj,Dog):
printobj.name
❻ python如何每次調用函數,實例化一個類
1、定義一個類。
2、定義一個函數,在函數此老內部創建類跡扒帆的實例對象。
3、在函數內部創建的類實例對象需要在函數外部使用,可以姿雹將該對象作為函數返回值返回。
❼ python 類當函數如何實例化
可以把類當做參數傳入到函數里,在函數里進行實例化。如下所示。
把類A當做參數傳入get_instance_from_class。在get_instance_from_class中對A進行實例化,獲得其實例,並返回。
classA:
def__init__(self):
print"IamaAinstance."
defprint_myself(self):
print"printmyself."
defmain():
defget_instance_from_class(a):
returna()
a=get_instance_from_class(A)
a.print_myself()
if__name__=="__main__":
main()
❽ pythondef裡面可以用自己定義的類嗎
pythondef裡面可以用自枯老己定義的類。pythondef裡面用自己定義的類叫做自定義類。Python中定槐敗脊義一個類很簡單,只需要使用關鍵詞class去聲明即可。python之中想要去使用一個類,那就必須鉛滲去實例化這個類,使用這個類的對象去使用它。
❾ python 類實例化
1、python的類中,以__(兩個下劃線)開頭但不以__結束的就是私有的變數或者函數,私有函數和變數不能在class外調用到。
class test:
def __init__(self, num):
self.__num = num
privateTest = test(100)
privateTest.__num#會報錯
當然也有辦法調到,只是不建議那樣做。
2、第一個class se()中的 變數s,是一個類變數,是class se的變數,類變數可以被類本身訪問,如se.s,也可以被各個對象訪問,而且由於是存在class里的所以值唯一,有點像C++里的static。
但是如果有某一個對象也創建了一個叫s的變數 覆蓋了類變數,那麼那個self.s就是對象的屬性,而不會調到類變數。
你可以運行試試
# -*- coding: cp936 -*-
class A:
name = []
def __init__(self, name):
self.name.append(name)
def nameMyself(self, name):
self.name = [name]
print 'my name is',self.name, 'and class A1name is :', A.name
def test(self):
print "my name is", self.name
obj = A("num0")
obj1 = A("num1")
print "obj1`name", obj1.name#對象訪問類變數name
print "class A`name", A.name#class自己訪問類變數name
obj1.test()#此時還是訪問的類變數name
obj1.nameMyself('aid')#給自己起個名覆蓋類變數的name
obj1.test()#對於obj1來說只能訪問自己的name了
print "class A`name", A.name#類變數依然存在