クラスの作成と使用
Dogクラスを作成します。1.
Dogクラスの各インスタンスによると、名前と年齢を格納するために作成されます。
私たちは、それぞれのスクワット犬(SIT())とロール(ROLL_OVER())能力を与えました:
クラス・ドッグ():
シミュレート子犬に#簡単な試み
デフ_init_(自己、氏名、年齢):
self.name =名前
self.age =年齢
デフ(自己)に座ります:
印刷は、(self.name.title()+ '今座っています')
デフROLL_OVER(自己):
印刷(self.name.title()+ 'ローリングされ')
①メソッド__init __()
//は、2つのアンダースコアに注意してください。
あなたは犬のクラスに応じて新しいインスタンスを作成するたびに)(_ _initを実行します。
この方法で、これは従来のメソッド名の競合で、デフォルトのPythonのメソッドを避けるように設計された大会であることをそれぞれ2つのアンダースコアの最初と最後の名前で。
Q:なぜ、メソッド定義、それ自身でパラメータを含める必要がありますか?
メソッド呼び出しの引数に関連付けられた各クラスは自動的に自己を通過し、それがインスタンスは、クラスのメソッドとプロパティにアクセスできるように、自身のインスタンスへのポイントへの参照です。
私たちは犬のインスタンスを作成すると、Pythonは)Dogクラスの__init __(のメソッドを呼び出します。我々は()の引数によって犬の名前と年齢を渡します。自己が自動的に転送されますので、それを渡す必要はありません。
私たちは犬に応じたクラスのインスタンスを作成するたびに、あなただけの最後の二つのパラメータ(名前と年齢)に価値を提供する必要があります。
に応じてクラスのインスタンスを作成2.
クラス・ドッグ():
シミュレート子犬に#簡単な試み
デフ__init __(自己、氏名、年齢):
self.name =名前
self.age =年齢
デフ(自己)に座ります:
印刷は、(self.name.title()+ '今座っています')
デフROLL_OVER(自己):
印刷(self.name.title()+ 'ローリングされ')
my_dog =犬( '白'、6)
印刷( "私の犬の名前は" + my_dog.name.title()+ '')
印刷((my_dog.age)+ + str 'は私の犬がある '' 歳。')
結果:
メソッド__init __は()明示的にreturnステートメントが含まれていませんが、Pythonは自動的に子犬の表現の例を返します。私たちは、このインスタンス変数my_dogに保存されます。
①アクセスプロパティ
構文:.インスタンス名の属性名
例えば:my_dog.name
②メソッドを呼び出します
構文:.インスタンス名メソッド名
例えば:my_dog.sit()
複数のインスタンスを作成③
ここでは、その後your_dogインスタンスを作成します。
クラス・ドッグ():
シミュレート子犬に#簡単な試み
デフ__init __(自己、氏名、年齢):
self.name =名前
self.age =年齢
デフ(自己)に座ります:
印刷は、(self.name.title()+ '今座っています')
デフROLL_OVER(自己):
印刷(self.name.title()+ 'ローリングされ')
my_dog =犬( '白'、6)
your_dog =犬( 'rourou'、3)
印刷( "私の犬の名前は" + my_dog.name.title()+ '')
印刷((my_dog.age)+ + str 'は私の犬がある '' 歳。')
my_dog.sit()
(+)(+ your_dog.name.title "あなたの犬の名前は" '')を印刷
印刷(+ STR(your_dog.age)+ 'あなたの犬がある '' 歳。')
your_dog.sit()
練習
1.レストラン:RESTAURANT_NAMEとcuisine_type:レストランという名前のクラス、メソッド__init __()設定2つのプロパティを作成します。前の二つは、印刷情報を先行するdescribe_restaurant()メソッドとopen_restaurant(命名法)と呼ばれるファイルを作成し、レストランが開いているというメッセージを出力れます。
クラスレストラン():
デフ__init __(自己、名前、cuisine_type):
self.name =名前
self.cuisine_type = cuisine_type
デフdescribe_restaurant(自己):
印刷(+ self.name.title()+ "レストランの名前は" '')
印刷(+ self.cuisine_type「このレストランのcuisine_typeがあります」)
デフopen_restaurant(自己):
印刷は、(self.name.title()+ '開いています')
my_restaurant =レストラン( 'xiaolongkan'、 '四川省')
my_restaurant.describe_restaurant()
my_restaurant.open_restaurant()
結果:
2. 3つのレストラン:あなたの完全な書かれた演習9-1クラスに基づいて3つのインスタンスを作成し、各インスタンスdescribe_restaurantためのメソッドを呼び出します()。
クラスレストラン():
デフ__init __(自己、名前、cuisine_type):
self.name =名前
self.cuisine_type = cuisine_type
デフdescribe_restaurant(自己):
印刷(+ self.name.title()+ "レストランの名前は" '')
印刷(+ self.cuisine_type「このレストランのcuisine_typeがあります」)
デフopen_restaurant(自己):
印刷は、(self.name.title()+ '開いています')
my_restaurant =レストラン( 'xiaolongkan'、 '四川省')
your_restaurant =レストラン( 'machimachi'、 'デザート')
his_restaurant =レストラン( 'nanjingdapaidang'、 '南京食品')
my_restaurant.describe_restaurant()
your_restaurant.describe_restaurant()
his_restaurant.describe_restaurant()
my_restaurant.open_restaurant()
your_restaurant.open_restaurant()
his_restaurant.open_restaurant()
3.ユーザー:他のいくつかのプロパティが含まれており、FIRST_NAME LAST_NAME属性のユーザーと呼ばれるクラスを作成し、通常は保存されているユーザープロファイルがあります。Userクラスでは、ユーザ情報の要約を出力しdescribe_user()という名前のメソッドを定義し、次にgreet_user(と呼ばれるメソッドを定義する)、ユーザに挨拶パーソナライズ生成します。
複数のインスタンスを作成し、異なるユーザを表し、各インスタンスは、二つの方法の上に呼び出すこと。
クラスのユーザー():
デフ__init __(自己、FIRST_NAME、LAST_NAME、場所):
self.first_name = FIRST_NAME
self.last_name = LAST_NAME
self.location =場所
デフdescribe_user(自己):
名前= self.first_name + self.last_name
印刷( 'こんにちは、' +名)
印刷(+ self.location 'で希望のu HAVA A GOOG時間')
ユーザー=ユーザー(「明」、「ジン」、「寧波」)
user.describe_user()
結果:
9.2クラスとインスタンス
1.クラスを作成すると、車を表し、
car.py
クラスカー():
デフ__init __(自己、メーカー、モデル、年):
self.make =メイク
self.model =モデル
self.year =年
デフ(自己)get_descriptive_nmae:
LONG_NAME = STR(self.year)+ ' '+ self.make +'' + self.model
リターンlong_name.title()
my_new_car =カー( 'アウディ'、 'A4'、2020)
印刷(my_new_car.get_descriptive_name())
デフォルト値を指定する2.属性
常に初期値0であるプロパティを追加するには、以下の命名Odometer_reading。また、読みオドメーター自動車用)read_odometer(というメソッドを追加しました:
クラスカー():
デフ__init __(自己、メーカー、モデル、年):
self.make =メイク
self.model =モデル
self.year =年
self.odometer_reading = 0
デフ(自己)get_descriptive_name:
LONG_NAME = STR(self.year)+ ' '+ self.make +'' + self.model
リターンlong_name.title()
デフread_odometer(自己):
印刷(+ STR(self.odometer_reading)+ 'その上にマイルを '' この車は持っています')
my_new_car =カー( 'アウディ'、 'A4'、2020)
印刷(my_new_car.get_descriptive_name())
my_new_car.read_odometer()
9.3プロパティの値を変更
1.直接変更します
直接割り当てcar.py上記の場合:
my_new_car.odometer_reading = 200
クラスカー():
デフ__init __(自己、メーカー、モデル、年):
self.make =メイク
self.model =モデル
self.year =年
self.odometer_reading = 0
デフ(自己)get_descriptive_name:
LONG_NAME = STR(self.year)+ ' '+ self.make +'' + self.model
リターンlong_name.title()
デフread_odometer(自己):
印刷(+ STR(self.odometer_reading)+ 'その上にマイルを '' この車は持っています')
my_new_car =カー( 'アウディ'、 'A4'、2020)
印刷(my_new_car.get_descriptive_name())
my_new_car.odometer_reading = 200
my_new_car.read_odometer()
2.の方法により、属性値を変更します。
増加update_odometer()メソッド
クラスカー():
デフ__init __(自己、メーカー、モデル、年):
self.make =メイク
self.model =モデル
self.year =年
self.odometer_reading = 0
デフ(自己)get_descriptive_name:
LONG_NAME = STR(self.year)+ ' '+ self.make +'' + self.model
リターンlong_name.title()
デフread_odometer(自己):
印刷(+ STR(self.odometer_reading)+ 'その上にマイルを '' この車は持っています')
デフ(自己、走行距離)update_odometer:
self.odometer_reading =走行距離
my_new_car =カー( 'アウディ'、 'A4'、2020)
印刷(my_new_car.get_descriptive_name())
my_new_car.update_odometer(200)
my_new_car.read_odometer()
結果:鄭州ウィメンズ病院http://www.zyfuke.com/
この方法は、走行距離計の読みを変更するときに、いくつかの余分な作業を行う、update_odometer()に拡張することができます。レッツ・コールバックにオドメーターの読みから、すべての人を禁止する、いくつかのロジックを追加します。
デフ(自己、走行距離)update_odometer:
走行距離> = self.odometer_readingの場合:
self.odometer_reading =走行距離
そうしないと:
印刷(「あなたは走行距離計をロールバックすることはできません」)
インクリメントのプロセスによる属性の値3。
追加方法increment_odometer()
この方法では、マイルを受け入れ、新しいキロの数です。
odometer_readingでそれに追加されました
中古車の走行の数キロを読むための最後の呼び出しread_odometer()メソッド
クラスカー():
デフ__init __(自己、メーカー、モデル、年):
self.make =メイク
self.model =モデル
self.year =年
self.odometer_reading = 0
デフ(自己)get_descriptive_name:
LONG_NAME = STR(self.year)+ ' '+ self.make +'' + self.model
リターンlong_name.title()
デフread_odometer(自己):
印刷(+ STR(self.odometer_reading)+ 'その上にマイルを '' この車は持っています')
デフ(自己、走行距離)update_odometer:
走行距離> = self.odometer_readingの場合:
self.odometer_reading =走行距離
そうしないと:
印刷(「あなたは走行距離計をロールバックすることはできません」)
デフincrement_odometer(自己、マイル):
self.odometer_reading + =マイル
my_used_car =カー( 'スバル'、 'アウトバック'、2013)
印刷(my_used_car.get_descriptive_name())
my_used_car.update_odometer(23500)
my_used_car.read_odometer()
my_used_car.increment_odometer(100)
my_used_car.read_odometer()
結果:
練習
1.食事の数:完全に書かれた演習9-1のためのプログラムは、number_served、およびそのデフォルト値が0に設定されているという名前のプロパティを追加します。このクラスによると、名前のレストランのインスタンスを作成し、多くの人々は、このレストランで食事をされたか、印刷して、値を変更して、もう一度それを印刷。
あなたが食事の回数を設定することができますset_number_served()というメソッドを追加します。このメソッドを呼び出し、それに値を渡し、その後、再び値を印刷します。
あなたが食事の回数をインクリメントすることができますincrement_number_served()というメソッドを追加します。このメソッドを呼び出して、これらの値のいずれかを渡す:あなたはダイナーの数レストランがありそうな毎日受け取ることと思います。
クラスレストラン():
デフ__init __(自己、名前、cuisine_type):
self.name =名前
self.cuisine_type = cuisine_type
number_served = 0
デフdescribe_restaurant(自己):
印刷(+ self.name.title()+ "レストランの名前は" '')
印刷(+ self.cuisine_type「このレストランのcuisine_typeがあります」)
デフopen_restaurant(自己):
印刷は、(self.name.title()+ '開いています')
デフ(自己、数)set_number_served:
self.number_served =数
印刷( 'ダイナーの数:' + STR(self.number_served))
デフincrement_number_served(自己、増分):
self.number_served + =増分
印刷( 'ダイナーの数は追加した後:' + STR(self.number_served))
my_restaurant =レストラン( 'xiaolongkan'、 '四川省')
my_restaurant.describe_restaurant()
my_restaurant.open_restaurant()
my_restaurant.set_number_served(100)
(20)my_restaurant.increment_number_served
結果を取得します。
そしてreset_login_attempts()というメソッドを記述し、属性login_attemptsの値は、それが0にリセットされます。
Userクラスのインスタンスを作成し、メソッドincrement_login_attempts()を複数回呼び出すための方法。Login_attemptsは、それが適切にインクリメントされていることを確認するために、属性値を出力してから()メソッドreset_login_attemptsを呼び出し、属性login_attemptsの値を出力し、再び、それは0にリセットされることを確認します。
クラスのユーザー():
デフ__init __(自己、FIRST_NAME、LAST_NAME、場所):
self.first_name = FIRST_NAME
self.last_name = LAST_NAME
self.location =場所
self.login_attempts = 0
デフdescribe_user(自己):
名前= self.first_name + self.last_name
印刷( 'こんにちは、' +名)
印刷(+ self.location 'で希望のu HAVA A GOOG時間')
デフincrement_login_attempts(自己):
self.login_attempts + = 1
印刷(「回数を記録しようとしているユーザー:」+ STR(self.login_attempts))
デフreset_login_attempts(自己):
self.login_attempts = 0
印刷(「ユーザのログイン回数をリセットしようとする試み:」+ STR(self.login_attempts))
ユーザー=ユーザー(「明」、「ジン」、「寧波」)
user.describe_user()
user.increment_login_attempts()
user.increment_login_attempts()
user.increment_login_attempts()
user.increment_login_attempts()
user.reset_login_attempts()