簡體   English   中英

Python 繼承模塊 Class

[英]Python Inherit Module Class

我有一個 class,在init方法中有一堆泛型變量,而不是特定於 class。 我想制作另一個包含這些變量的 class,然后擁有第一個 class inheritance 這些變量。

所以第二個 class 不是父 class,而更像是一個模塊 class。

我如何在 python 中寫這個?

謝謝。

Class A():
   def __init__(self):
       self.generic_variable1 = 'blah'
       self.generic_variable2 = 'blah'
       self.generic_variable3 = 'blah'
       self.generic_variable4 = 'blah'
       self.generic_variable5 = 'blah'
       self.generic_variable6 = 'blah'
   
   def generic_method1(self):
       return 'blah'
   
   def class_specific_method1(self):
       pass

創建兩個類后:

Class A():
   def __init__(self):
       pass
   
   def class_specific_method1(self):
       pass

Class B():
   def __init__(self):
       self.generic_variable1 = 'blah'
       self.generic_variable2 = 'blah'
       self.generic_variable3 = 'blah'
       self.generic_variable4 = 'blah'
       self.generic_variable5 = 'blah'
       self.generic_variable6 = 'blah'
   
   def generic_method1(self):
       return 'blah'
   

簡直了

class A:
    ... ...
    
class B(A):
    ... ...

在 class B 中,如果不重寫__init__ ,它將自動使用 class A 的。

如果您需要在 class B 的__init__中做額外的事情:

class B(A):
    def __init__(self, *args, **kw):
        super().__init__(*args, **kw)
        ... ...

class 可以訪問的模塊級字典。

d = {'k':'v','q':'r','m':'n',...}

class F:
    variables = d
    def __init__(self,...)

或者可能是 collections.namedtuple 而不是字典來為您提供訪問權限 - instance.variables.attr而不是 instance.variables[attr]`。

如果您想要單個屬性:

d = {'k':'v','q':'r','m':'n'}

class F:
    def __init__(self):
        for attr,val in d.items():
            setattr(self,attr,val)

或者在 class 之外設置屬性

d = {'k':'v','q':'r','m':'n'}

class F:
    def __init__(self):
        pass

for k,v in d.items():
    setattr(F,k,v)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM