Pythonのすべてのクラスメソッドにグローバル変数を使用するにはどうすればよいですか?

jm33_m0
  • 私が持ってPerson保持しているクラス、age今私は、すべてのメソッドの内部の中にそれがアクセスできるようにする必要があり、財産をPersonすべてのメソッドが正しく動作するように、クラス

  • 私のコードは次のとおりです。

class Person:
    #age = 0
    def __init__(self,initialAge):
        # Add some more code to run some checks on initialAge
        if(initialAge < 0):
            print("Age is not valid, setting age to 0.")
            age = 0
        age = initialAge

    def amIOld(self):
        # Do some computations in here and print out the correct statement to the console
        if(age < 13):
            print("You are young.")
        elif(age>=13 and age<18):
            print("You are a teenager.")
        else:
            print("You are old.")

    def yearPasses(self):
        # Increment the age of the person in here
        Person.age += 1 # I am having trouble with this method

t = int(input())
for i in range(0, t):
    age = int(input())         
    p = Person(age)  
    p.amIOld()
    for j in range(0, 3):
        p.yearPasses()       
    p.amIOld()
    print("")
  • yearPasses()age1増加するはずですが、呼び出されても何も実行されません

  • それを機能させるためにどのように適応させるのですか?

PM2リング

agePersonクラスのインスタンス属性である必要があります。これを行うには、次のself.ageような構文を使用します。

class Person:
    def __init__(self, initialAge):
        # Add some more code to run some checks on initialAge
        if initialAge < 0:
            print("Age is not valid, setting age to 0.")
            self.age = 0
        self.age = initialAge

    def amIOld(self):
        # Do some computations in here and print out the correct statement to the console
        if self.age < 13:
            print("You are young.")
        elif 13 <= self.age <= 19:
            print("You are a teenager.")
        else:
            print("You are old.")

    def yearPasses(self):
        # Increment the age of the person in here
        self.age += 1 

#test

age = 12
p = Person(age)  

for j in range(9):
    print(j, p.age)
    p.amIOld()
    p.yearPasses()    

出力

0 12
You are young.
1 13
You are a teenager.
2 14
You are a teenager.
3 15
You are a teenager.
4 16
You are a teenager.
5 17
You are a teenager.
6 18
You are a teenager.
7 19
You are a teenager.
8 20
You are old.

元のコードには次のようなステートメントがありました

age = initialAge 

その方法で。これageは、メソッドで指定さたローカルオブジェクトを作成するだけです。このようなオブジェクトはメソッドの外部には存在せず、メソッドの終了時にクリーンアップされるため、次にメソッドを呼び出すときに、その古い値はage失われます。

self.ageクラスインスタンスの属性です。クラスのどのメソッドもself.age構文を使用してその属性にアクセスして変更でき、クラスの各インスタンスには独自の属性があるため、Personクラスの複数のインスタンスを作成すると、それぞれに独自のがあり.ageます。

クラス自体の属性であるオブジェクトを作成することも可能です。これにより、クラスのすべてのインスタンスが単一のオブジェクトを共有できるようになります。例えば、

Person.count = 0

.countPersonクラスという名前クラス属性を作成しますメソッドの外部に代入ステートメントを配置して、クラス属性を作成することもできます。例えば、

class Person:
    count = 0
    def __init__(self, initialAge):
        Person.count += 1
        # Add some more code to run some checks on initialAge
        #Etc

プログラムがこれまでに作成したPersonインスタンスの数を追跡します。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonのすべてのテストでメソッドをグローバルにモックするにはどうすればよいですか?

分類Dev

クラスのメソッドからグローバル変数に出力を取得するにはどうすればよいですか?

分類Dev

グローバル変数を使用せずに関数内でPHPクラスメソッドを使用するにはどうすればよいですか?

分類Dev

ビルドメソッド中にJavaクラスのArrayListメンバー変数に値を割り当てるにはどうすればよいですか?

分類Dev

Javaメソッド/関数内のすべてのローカル変数をリストするにはどうすればよいですか?

分類Dev

forEachメソッドとコールバックを唯一の引数として使用して、配列内のすべての名前をコンソールログに記録するにはどうすればよいですか?

分類Dev

別のクラスのメソッドのパラメーターとして変数を使用するにはどうすればよいですか?

分類Dev

自分のクラスまたはメソッドをVueでグローバルにインポートするにはどうすればよいですか?

分類Dev

すべての列挙型クラスのtoString()メソッドをオーバーライドするにはどうすればよいですか?

分類Dev

Javascriptのすべてのテストで使用されるグローバル変数を追加するにはどうすればよいですか?

分類Dev

コントローラ内のすべてのパブリック関数メソッドを取得するにはどうすればよいですか?

分類Dev

メソッド内で作成された変数をクラス内の他のすべてのメソッドで使用できるようにするにはどうすればよいですか?

分類Dev

クローズドソースクラスを変更して、内のメソッドを操作するにはどうすればよいですか?

分類Dev

Rhinoを使用してJavascriptのグローバル関数としてJavaクラスのメソッドを追加するにはどうすればよいですか?

分類Dev

タイプエラーメッセージなしでOBJLoaderを使用してオブジェクトのグループをグローバル変数にロードするにはどうすればよいですか?

分類Dev

Pythonでグローバルオブジェクトのメソッドをモックするにはどうすればよいですか?

分類Dev

Pythonを使用してネストされたスコープのグローバル変数を変更するにはどうすればよいですか?

分類Dev

Juliaコードからすべてのグローバル変数をファイルに保存するにはどうすればよいですか?

分類Dev

メソッドを使用してローカル変数の値を変更するにはどうすればよいですか?

分類Dev

更新されたグローバルクラス変数をあるメソッドから別のメソッドにどのように渡しますか?

分類Dev

Rubyで祖先メソッドのないクラスのすべてのメソッドを表示するにはどうすればよいですか?

分類Dev

Jintのグローバルスコープからすべての変数(および関数名)を取得するにはどうすればよいですか?

分類Dev

WPFコントロールをクラスメソッドの結果にバインドするにはどうすればよいですか?

分類Dev

すべてのグローバル変数を関数にインポートするにはどうすればよいですか-Python

分類Dev

Android-mainActivityのメソッドを別のクラスの静的ブール変数と同期するにはどうすればよいですか?

分類Dev

Ruby:モジュールのすべてのクラスメソッドを見つけるにはどうすればよいですか?

分類Dev

C ++の関数を使用してグローバル変数にアクセスするにはどうすればよいですか?

分類Dev

サービスメソッドの引数としてルートパラメータを使用するにはどうすればよいですか?

分類Dev

Pythonクラスメソッドに独自のフィールドを参照するように指示するにはどうすればよいですか?

Related 関連記事

  1. 1

    Pythonのすべてのテストでメソッドをグローバルにモックするにはどうすればよいですか?

  2. 2

    クラスのメソッドからグローバル変数に出力を取得するにはどうすればよいですか?

  3. 3

    グローバル変数を使用せずに関数内でPHPクラスメソッドを使用するにはどうすればよいですか?

  4. 4

    ビルドメソッド中にJavaクラスのArrayListメンバー変数に値を割り当てるにはどうすればよいですか?

  5. 5

    Javaメソッド/関数内のすべてのローカル変数をリストするにはどうすればよいですか?

  6. 6

    forEachメソッドとコールバックを唯一の引数として使用して、配列内のすべての名前をコンソールログに記録するにはどうすればよいですか?

  7. 7

    別のクラスのメソッドのパラメーターとして変数を使用するにはどうすればよいですか?

  8. 8

    自分のクラスまたはメソッドをVueでグローバルにインポートするにはどうすればよいですか?

  9. 9

    すべての列挙型クラスのtoString()メソッドをオーバーライドするにはどうすればよいですか?

  10. 10

    Javascriptのすべてのテストで使用されるグローバル変数を追加するにはどうすればよいですか?

  11. 11

    コントローラ内のすべてのパブリック関数メソッドを取得するにはどうすればよいですか?

  12. 12

    メソッド内で作成された変数をクラス内の他のすべてのメソッドで使用できるようにするにはどうすればよいですか?

  13. 13

    クローズドソースクラスを変更して、内のメソッドを操作するにはどうすればよいですか?

  14. 14

    Rhinoを使用してJavascriptのグローバル関数としてJavaクラスのメソッドを追加するにはどうすればよいですか?

  15. 15

    タイプエラーメッセージなしでOBJLoaderを使用してオブジェクトのグループをグローバル変数にロードするにはどうすればよいですか?

  16. 16

    Pythonでグローバルオブジェクトのメソッドをモックするにはどうすればよいですか?

  17. 17

    Pythonを使用してネストされたスコープのグローバル変数を変更するにはどうすればよいですか?

  18. 18

    Juliaコードからすべてのグローバル変数をファイルに保存するにはどうすればよいですか?

  19. 19

    メソッドを使用してローカル変数の値を変更するにはどうすればよいですか?

  20. 20

    更新されたグローバルクラス変数をあるメソッドから別のメソッドにどのように渡しますか?

  21. 21

    Rubyで祖先メソッドのないクラスのすべてのメソッドを表示するにはどうすればよいですか?

  22. 22

    Jintのグローバルスコープからすべての変数(および関数名)を取得するにはどうすればよいですか?

  23. 23

    WPFコントロールをクラスメソッドの結果にバインドするにはどうすればよいですか?

  24. 24

    すべてのグローバル変数を関数にインポートするにはどうすればよいですか-Python

  25. 25

    Android-mainActivityのメソッドを別のクラスの静的ブール変数と同期するにはどうすればよいですか?

  26. 26

    Ruby:モジュールのすべてのクラスメソッドを見つけるにはどうすればよいですか?

  27. 27

    C ++の関数を使用してグローバル変数にアクセスするにはどうすればよいですか?

  28. 28

    サービスメソッドの引数としてルートパラメータを使用するにはどうすればよいですか?

  29. 29

    Pythonクラスメソッドに独自のフィールドを参照するように指示するにはどうすればよいですか?

ホットタグ

アーカイブ