1. ホーム
  2. python

[解決済み] Objectをパラメータに持つクラス

2022-03-04 21:47:41

質問

Pythonのコードをscalaのコードに翻訳しようとしています。私はPythonの全くの素人です。

しかし、なぜいくつかのクラスは、パラメータとしてオブジェクトを持っていますが、それを明示的に使用することはありません?そもそもパラメータとして持っている理由は何なのでしょうか?

class Table(object)

お忙しい中、ありがとうございました。

解決方法は?

Python2では、次のように宣言します。 Table を指定します。 新スタイルのクラス ("classic" クラスとは対照的に)です。 Python3 ではすべてのクラスが new-style class になっているので、これはもう必要ありません。

新しいスタイルのクラスには、クラシックなクラスにはない特別な属性がいくつかあります。

class Classic: pass
class NewStyle(object): pass

print(dir(Classic))
# ['__doc__', '__module__']

print(dir(NewStyle))
# ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']

また プロパティ スーパー はクラシッククラスでは動作しません。

Python2では、すべてのクラスを新スタイルのクラスにするのがよい考えです。(後方互換性のために、標準ライブラリの多くのクラスはまだ古典クラスですが)。

一般に、次のようなステートメントでは

class Foo(Base1, Base2):

Foo は、基底クラスを継承するクラスとして宣言されています。 Base1Base2 .

object は、Pythonのすべてのクラスの母体です。これは新しいスタイルのクラスなので objectTable を新しいスタイルのクラスとする。