ここ数日で Python の学習を開始しましたが、オブジェクト指向プログラミングを調査しているときに問題に直面しています。pydev プラグインの実行中に Eclipse を使用しており、python 3.3 ベータ版で実行しており、Windows 64 ビット システムを使用しています。
スーパークラス (別のソース ファイルでコーディングした各クラス) を拡張しようとしない限り、クラスを正常に初期化し、その中の任意のメソッドを使用できます。たとえば、次のコードは正常にコンパイルおよび実行されます。
class pythonSuper:
string1 = "hello"
def printS():
print pythonSuper.string1
それにアクセスして実行するコード...
from stackoverflow.questions import pythonSuper
class pythonSub:
pysuper = pythonSuper.pythonSuper()
pysuper.printS()
私が言ったように、それはうまくいきます。次のコードはそうではありません
class pythonSuper: """Same superclass as above. unmodified, except for the spacing"""
string1 = "hello"
def printS(self):
print(pythonSuper.string1)
まあ、それは完全に真実ではありません。少なくとも私の知る限り、スーパークラスはまったく問題ありません。奇妙なのはサブクラスです
from stackoverflow.questions import pythonSuper
class pythonSub(pythonSuper):
pass
pythonObject = pythonSub()
pythonSub.pythonSuper.printS()
サブクラスが実行されると、Eclipse はこのエラーを出力します
Traceback (most recent call last):
File "C:\Users\Anish\workspace\Python 3.3\stackoverflow\questions\pythonSub.py",
line 7, in <module>
class pythonSub(pythonSuper):
TypeError: module.__init__() takes at most 2 arguments (3 given)
何が起こっているのかわかりません。私は thenewboston のチュートリアルから python を学んでいますが、それらは時代遅れです (彼のチュートリアル コードは python バージョン 2.7 を使用していると思います)。また、彼は IDLE でコーディングしています。つまり、彼のクラスはすべて 1 つのファイルに含まれています。ただし、私のものはすべて独自のファイルにコーディングされています。つまり、発生しているコード エラーが古い構文によるものなのか、この言語に関する知識不足によるものなのか、私にはわかりません。しかし、私は脱線します。コードがうまくいかない理由とそれを修正するために私ができることの解決策および/または説明を誰かが投稿できれば. 説明が望ましいでしょう。コードをコピーして貼り付けて動作することを確認するよりも、同様の状況で問題を回避して修正できるように、何が間違っているのかを知りたいです。ありがとう、そして私はあなたの答えを楽しみにしています