親クラスのすべての機能を継承するにはどうすればよいですか?

O.rka

ete3.Tree呼び出されTreeAugmented新しいクラスにすべての機能を継承しようとしていますが、すべてのメソッドと属性が使用できるわけではありませんか?

私はで行うことになっていますものがある__init__とはsuper__init__を使用した属性の継承のsuperように、個々の属性を指定する必要があるようです

クラスtree内にすべてを格納する場所という別のオブジェクトete3.Treeを含めることもできますが、これらのオブジェクトをete3パッケージ内の関数で使用できるようにしたいと考えています。

親クラスからすべてを継承する方法はありますか?

import ete3
newick = "(((petal_width:0.098798,petal_length:0.098798):0.334371,"
         "sepal_length:0.433169):1.171322,sepal_width:1.604490);"

print(ete3.Tree(newick).children)
# [Tree node '' (0x1296bf40), Tree node 'sepal_width' (0x1296bf0f)]

class TreeAugmented(ete3.Tree):
    def __init__(self, name=None, new_attribute=None):
        self.name = name # This is an attribute in ete3 namespace
        self.new_attribute = new_attribute

x = TreeAugmented(newick)
x.children

トレースバック

AttributeError                            Traceback (most recent call last)
<ipython-input-76-de3016b5fd1b> in <module>()
      9
     10 x = TreeAugmented(newick)
---> 11 x.children

~/anaconda/envs/python3/lib/python3.6/site-packages/ete3/coretype/tree.py in _get_children(self)
    145
    146     def _get_children(self):
--> 147         return self._children
    148     def _set_children(self, value):
    149         if type(value) == list and \

AttributeError: 'TreeAugmented' object has no attribute '_children'
ジェローム

親クラスからすべてを継承する方法はありますか?

デフォルトではそうです。子クラスは、オーバーライドしないものを継承します。

あなたの子クラスはほぼ正しいです。__init__メソッドをオーバーライドするため__init__、親クラスのメソッドも呼び出されるようにする必要があります。

これは、以下を使用して実現されsuperます。

class TreeAugmented(ete3.Tree):
    def __init__(self, newick=None, name=None, format=0, dist=None, support=None, new_attribute=None):
        super().__init__(newick=newick, format=format, dist=dist, support=support, name=name)
        self.new_attribute = new_attribute

self.name = nameで行われるため、行う必要はありませんsuper().__init__()あなたが気にかけなければならないのはあなたの子供のクラスに特有のものだけです。

* args / ** kwargsの使用

また、これらすべての親init属性に触れるわけではないため、args / kwargsを使用してコードをより明確にすることができます。

class TreeAugmented(ete3.Tree):
    def __init__(self, newick=None, new_attribute=None, *args, **kwargs):
        super().__init__(newick=newick, *args, **kwargs)
        self.new_attribute = new_attribute

この例ではnewick、最初の位置を維持他のすべてのパラメーターnew_attributeがキーワード引数の後に来るか、キーワード引数であると判断しました

 親クラスパラメータを設定する

必要がない場合は、親クラスのすべてのパラメーターを公開する必要はありません。たとえば、フォーマット3「すべてのブランチ+すべての名前」のみを実行する子クラスを作成する場合は、次のように記述してフォーマットを強制できます。

class TreeAugmented(ete3.Tree):
    def __init__(self, newick=None, name=None, dist=None, support=None, new_attribute=None):
        super().__init__(newick=newick, format=3, dist=dist, support=support, name=name)
        self.new_attribute = new_attribute

(これは、一般的な方法を公開するための単なるダミーの例です。おそらく、コンテキストでは意味がありません。)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

すべての変数を親クラスからinit関数を持つ基本クラスに継承するにはどうすればよいですか?

分類Dev

super()を使用して、複数の父親クラスから特定のクラスを継承するにはどうすればよいですか?

分類Dev

多重継承を使用していくつかの親クラス属性値を取得するにはどうすればよいですか?

分類Dev

継承されたクラスの拡張機能の関数をオーバーライドするにはどうすればよいですか?

分類Dev

親プロセスから継承されたすべての環境変数を削除するにはどうすればよいですか?

分類Dev

すべての要素に基本クラスから1つの特定のプロパティを継承させるにはどうすればよいですか?

分類Dev

親定数を継承してアクセスするにはどうすればよいですか?

分類Dev

VueJSの小道具-「クラス」属性の継承を回避するにはどうすればよいですか?

分類Dev

2つのクラスからUITextFieldを継承するにはどうすればよいですか?

分類Dev

継承で特定の基本クラスを取得するにはどうすればよいですか?

分類Dev

さまざまに継承されたすべてのクラスの関数を呼び出すにはどうすればよいですか?

分類Dev

このコードで親の内部クラスを継承するにはどうすればよいですか?

分類Dev

このコードで親の内部クラスを継承するにはどうすればよいですか?

分類Dev

PHPのクラス継承で親メソッドのみを実行するにはどうすればよいですか?

分類Dev

Rubyの継承された親メソッドでChildクラスを取得するにはどうすればよいですか?

分類Dev

次のクラス継承を設計するにはどうすればよいですか?

分類Dev

継承チェーン内のすべてのクラスの属性を返すにはどうすればよいですか?

分類Dev

継承を無視して、クラスが特定のタイプであるかどうかを確認するにはどうすればよいですか?

分類Dev

この継承をJavaで機能させるにはどうすればよいですか?

分類Dev

LuaBridgeを使用して同じクラスから継承された2つのクラスを登録するにはどうすればよいですか?

分類Dev

継承されたクラスで親クラス変数の値を設定し、それを継承された関数で使用するにはどうすればよいですか?

分類Dev

QT Creatorで継承されたクラスのオブジェクトとしてQWidgetを宣言するにはどうすればよいですか?

分類Dev

親クラスを継承された子クラスに休止状態でダウンキャストするにはどうすればよいですか?

分類Dev

継承を使用せずにPythonクラスに別名を付けて別の名前にするにはどうすればよいですか?

分類Dev

クラス名が親/他のすべてのクラス名の上にある要素を検出するにはどうすればよいですか?

分類Dev

サブクラスのサブクラスを持つことはできますか?親の特性と別のサブクラスの特性をエラーなしで継承するにはどうすればよいですか?

分類Dev

(すでに存在する)クラスに別のクラスを継承させるにはどうすればよいですか?

分類Dev

継承するときに基本クラスのコピーを作成しないようにするにはどうすればよいですか?C ++

分類Dev

Odooの純粋なPythonクラスから継承してメソッドを変更するにはどうすればよいですか?

Related 関連記事

  1. 1

    すべての変数を親クラスからinit関数を持つ基本クラスに継承するにはどうすればよいですか?

  2. 2

    super()を使用して、複数の父親クラスから特定のクラスを継承するにはどうすればよいですか?

  3. 3

    多重継承を使用していくつかの親クラス属性値を取得するにはどうすればよいですか?

  4. 4

    継承されたクラスの拡張機能の関数をオーバーライドするにはどうすればよいですか?

  5. 5

    親プロセスから継承されたすべての環境変数を削除するにはどうすればよいですか?

  6. 6

    すべての要素に基本クラスから1つの特定のプロパティを継承させるにはどうすればよいですか?

  7. 7

    親定数を継承してアクセスするにはどうすればよいですか?

  8. 8

    VueJSの小道具-「クラス」属性の継承を回避するにはどうすればよいですか?

  9. 9

    2つのクラスからUITextFieldを継承するにはどうすればよいですか?

  10. 10

    継承で特定の基本クラスを取得するにはどうすればよいですか?

  11. 11

    さまざまに継承されたすべてのクラスの関数を呼び出すにはどうすればよいですか?

  12. 12

    このコードで親の内部クラスを継承するにはどうすればよいですか?

  13. 13

    このコードで親の内部クラスを継承するにはどうすればよいですか?

  14. 14

    PHPのクラス継承で親メソッドのみを実行するにはどうすればよいですか?

  15. 15

    Rubyの継承された親メソッドでChildクラスを取得するにはどうすればよいですか?

  16. 16

    次のクラス継承を設計するにはどうすればよいですか?

  17. 17

    継承チェーン内のすべてのクラスの属性を返すにはどうすればよいですか?

  18. 18

    継承を無視して、クラスが特定のタイプであるかどうかを確認するにはどうすればよいですか?

  19. 19

    この継承をJavaで機能させるにはどうすればよいですか?

  20. 20

    LuaBridgeを使用して同じクラスから継承された2つのクラスを登録するにはどうすればよいですか?

  21. 21

    継承されたクラスで親クラス変数の値を設定し、それを継承された関数で使用するにはどうすればよいですか?

  22. 22

    QT Creatorで継承されたクラスのオブジェクトとしてQWidgetを宣言するにはどうすればよいですか?

  23. 23

    親クラスを継承された子クラスに休止状態でダウンキャストするにはどうすればよいですか?

  24. 24

    継承を使用せずにPythonクラスに別名を付けて別の名前にするにはどうすればよいですか?

  25. 25

    クラス名が親/他のすべてのクラス名の上にある要素を検出するにはどうすればよいですか?

  26. 26

    サブクラスのサブクラスを持つことはできますか?親の特性と別のサブクラスの特性をエラーなしで継承するにはどうすればよいですか?

  27. 27

    (すでに存在する)クラスに別のクラスを継承させるにはどうすればよいですか?

  28. 28

    継承するときに基本クラスのコピーを作成しないようにするにはどうすればよいですか?C ++

  29. 29

    Odooの純粋なPythonクラスから継承してメソッドを変更するにはどうすればよいですか?

ホットタグ

アーカイブ