1. 程式人生 > >Python 問題 收集

Python 問題 收集

問題列表

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'>