Python 問題 收集
阿新 • • 發佈:2018-12-07
問題列表
類
1.1 self.__class__() 和 self.__class__
self.__class__
就是一個類名,相當於A
,類名的型別是type
self.__class__(xx)
就是一個類例項,相當於呼叫A(xx)
,它的型別就是A
def class_self_class():
class A(object):
def __init__(self,name):
self.name = name
def nf(self):
print(self.__class__(self.name), type(self.__class__(self.name)), self.__class__, type(self.__class__),sep='\n')
print(isinstance(self.__class__(self.name),self.__class__))
def __str__(self):
return self.name
a = A("A")
a.nf()
print(type(a))
# 輸出結果
A
<class '__main__.class_self_class.<locals>.A'>
<class '__main__.class_self_class.<locals>.A'>
<class 'type'>
True
<class '__main__.class_self_class.<locals>.A'>
1.2 self.__class__()和 Class() 異同
都可以用來建立類,但是如果self.__class()__
用在繼承的父類裡,能夠自動分清當前物件屬於子類還是父類?
def class_cons():
class Foo(object):
def create_new(self):
return self.__class__()
def create_new2(self):
return Foo()
class Bar(Foo):
pass
b = Bar()
c = b.create_new()
print(type(c)) # We got an instance of Bar
d = b.create_new2()
print(type(d)) # we got an instance of Foo
# 輸出結果
<class '__main__.class_cons.<locals>.Bar'>
<class '__main__.class_cons.<locals>.Foo'>