難解のクラス-2

取敢えず一回目の例題と説明は終えましたが、自分でcodeを書くとエラーが続出。
更に最初から例題で練習していきます。

① 親クラスの動作1 6/28/2020
# class カメラマンを親として設定。 name名前の表示の練習。

class カメラマン:
    def __init__(self, name=’田中’):  #defaultでは、田中さんがカメラマンです。
        self.name = name # 呼び出される人の名前(self.name)は、親クラスのnameで指定された名前です。 
        print(self.name)

カメラマン() # —> こう書けば、run時に処理が行われ、田中さんの名前がprintされます 
カメラマン(‘高橋’) # —> 田中さんの名前ではなく、高橋さんが指定されました
app=カメラマン(‘伊藤’) # —> 伊藤。 appは無くても良いが、付けた方が分かり易い
# 親クラスには既にname=田中が与えられているので、特に指定しなければ田中がprintされる
# 変更する場合は、()内に設定する
 
説明が多すぎてわかり難くなっているので、codeだけを書き出しておきます。
 
 
class カメラマン:
    def __init__(self, name=’田中’):
        self.name = name
        print(self.name)
 
カメラマン() 
 
#カメラマンにnameしかないのはおかしいので、次回は年令、収入、得意技などをdefaultで設定してそれらを子クラスの弟子たちが乗り越えていく様をプログラムしてみましょう。
 
———————————————
 
② 親クラスの動作2 
# 年令、収入、得意技などをdefaultで設定
# 親クラスの属性を設定するが、書き換えることも出来る(オーバーライドと言う)

class カメラマン: # defaultのデータは与えられております。
    def __init__(self, name=’田中’, age=45, income=1000, field=’flower’): 
        self.name = name 
        self.age = age
        self.income = income
        self.field = field
        print(self.name, age, income, field)
            # 親クラスの初めはこう書くものだと思ってください。        

カメラマン(‘伊藤’) # —> 伊藤 45 1000 flower
 
# カメラマンの名前は田中から伊藤に書き換えられました。これをオーバーライド(override)と言います。
# その他のすべての属性(データ)は取得できましたね。
 
 
次は何人かの弟子を作ってみます(カメラマンのインスタンスを作ります)。
親クラスのカメラマンは設計図とか金型みたいなものと言われます。
そしてそれから作られるインスタンスが、カメラマンの性格を持った製品と言うわけです。
———————————————-
 
 ③ 親クラスのインスタンス(同類のカメラマン)を作る

class カメラマン:  # 親クラス
 def __init__(self, name=’田中’, age=45, income=1000, field=’flower’):
        self.name = name
        self.age = age
        self.income = income
        self.field = field
        print(name,age, income, field)

カメラマン() —> 田中 45 1000 flower
弟子2 = カメラマン(‘井上’, 30, 500, ‘風景’)  —>井上 30 500 風景
    # 親クラスのデータを自分(井上)のデータに書き換えている。
 
# この様にインスタンスを作って行けば、親クラスの性格を維持した、或いは変わった性格のカメラマンを創造できます。
 
④ カメラマンを追い抜く新人(Newguy)のクラスを作り、データを全て書き換えます。
  # 半角、全角を混ぜるとerrorが発生するので、コメント以外は半角にしました。
 
 

class Cameraman: # 親クラス
def __init__(self, name=’田中’, age=45, income=1000, field=’flower’):
    pass #親の性格(ここでは名前、年とかのデータ)を引き継がないならpassでOK
    #self.name = name
    #self.age = age
    #self.income = income
    #self.field = field

class Newguy(Cameraman):
    def __init__(self, name, age, income, field) :
        super().__init__(name, age, income, field)
        self.name = name
        self.age = age
        self.income = income
        self.field = field

    def change_data(self):
        print(self.name, self.age, self.income, self.field)


newguy1 = Newguy(‘井上’, 29, 2000, ‘風景’)
newguy1.change_data() # —> 井上 29 2000 Landscape

 
# 新人がプロを追いこしました。 プログラムの世界ならです。
 
 
この稿は終わりです。 
 
 
 
Python別館
難解のクラスを作る-1 (完)

オブジェクト指向言語には、良く分からないクラスと云うものが有ります。 いまネットやyoutubeでP …

Python別館
全手動で撮影する人の為のアプリ(完)

以前Pythonで「EV計算機を作る」を作ったことがありますが、今回は簡単にスクリプトでEV関係のク …

Python別館
御神籤を引いて見よう

Python学習のため御神籤アプリを作ってみます。① 大吉、中吉、小吉を引き当てる*ボタンでキャンバ …