Pythonの学習day21

パイソンday21

組み合わせ

組み合わせは何ですか

オブジェクト内の属性の組み合わせを意味し、別の目的であります

なぜの組み合わせを使用

継承とオブジェクトの組み合わせとして、コードの冗長性を低減するために

# 组合的实现:
class People:
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

class Teacher(People):
    def __init__(self, name, age, sex):
        super().__init__(name, age, sex)

class Student(People):
    def __init__(self, name, age, sex):
        super().__init__(name, age, sex)

class Date:
    def __init__(self, year, month, day):
        self.year = year
        self.month = month
        self.day = day

    def tell_birth(self):
        print(f'{self.year}年{self.month}月{self.day}日')

tea1 = Teacher('momo', 24, 'female')
date_obj = Date(2018, 8, 17)
tea1.date = date_obj
tea1.date.tell_birth()

コンビネーションの概要

継承:

どのような子と親クラスの所属との関係であるかのクラスとクラス間の関係、

の組み合わせ:

オブジェクトとオブジェクトの間の関係、オブジェクト間の関係が他のオブジェクトを有しているものの種類

パッケージ

パッケージとは何ですか

これは、オブジェクトにカプセル化された属性(特性やスキル)のパッケージスタックを指し

目的とすることができる保存されたデータオブジェクトをフェッチする.特性を得るための方法

なぜパッケージ

オブジェクトを介して簡単にアクセスするために、パッケージの目的は、.属性の実施形態の属性を取得します

どのようにパッケージ化します

前記可変--->データ属性

スキル:機能---> method属性

クラス定義されたパイルの属性(特性やスキル)以内

オブジェクトを介し.=プロパティ値を属性

アクセス制限メカニズム

アクセス制限メカニズムとは何ですか

クラス定義内では、すべてのために、__データ属性とメソッド、プロパティの始まりは、Python内部に隠されるので、外を任せることはできない"直接"アクセス内の__プロパティの先頭に

アクセス制限メカニズムの目的

私有財産と簡単に外部の属性によってアクセスすることはできません、あなたは隠すことができ、直接外部を呼び出しません

利点:

これにより、データのセキュリティを確保し、より厳密な取得ロジック重要データ

インタフェース:プライバシーは、ビジネス・ロジック・インターフェース処理を行うことで、インタフェースパッケージを経由して、属性、および呼び出し元のデータに戻ります

注意:Pythonで、クラス内で、プロパティへのアクセスの制限を適用しない__始め属性だけバリエーションを行い、あなたが直接アクセスしたい場合は、変形の名前を呼び出すことができます

__name = 'momo' #---> _类名__属性名

class ATM:
    def __flow(self):
        print('打印账单')
        
    def withdraw(self):
        self.__flow()
        print('访问限制!!')
        
atm = ATM()
atm.withdraw()

プロパティ

propretyは何ですか

Pythonのデコレータの方法は、主に内部クラスを使用することに、構築されました

なぜプロパティを使用します

それを使用する目的は、内部クラスのメソッド(メソッド名DEFは())(DEF方法)となります

メソッドを呼び出すオブジェクトでは、対象.方法は、()のターゲットとなっ.法(通常のデータ属性のように見えます)

プロパティを使用する方法

class People:
    def __init__(self,name,weight,height):
        self.name = name 
        self.weight = weight
        self.height = height
        
    @property
    def bmi(self):
        return self.height/(self.weight ** 2)
    
    @property
    def get_name(self):
        return self.name

    # 改
    @get_name.setter
    def set_name(self, val):
        self.name = val

    # 删除
    @get_name.deleter
    def del_name(self):
        del self.name
    
p = People('momo',95,1.6)
print(p.bmi)

# 注意: 不能对被装饰过的方法属性修改.

ポリモーフィズム

何多型であります

多型は同じものの、様々な形態をいいます

ポリモーフィックオブジェクト

また、ポリモーフィズム、継承、多態性として知られている多型は、プログラム内の現れであります

ポリモーフィックな目的は、同じ機能の場合には、まだ同じ名前を呼んで、オブジェクトの様々な異なるタイプのを可能にすることです

親クラス:統一基準のセットを定義します

サブクラス:統一基準の親に従ってください

ポリモーフィック究極の目標:ユーザーがより簡単に同じ機能のメソッドを呼び出すことができるようにするために、標準化と統一されたサブカテゴリーの準備、

class Animal:
    def speak(self):
        pass

class Cat(Animal):
    def speak(self):
        print('喵喵喵~~~~')
    
class Dog(Animal):
    def speak(self):
        print('汪汪汪~~~~')
    
class Pig(Animal):
    def speak(self):
        print('哼哼哼~~~~')
    
cat = Cat()
dog = Dog()
pig =pig()
cat.speak()
dog.speak()
pig.speak()

抽象クラス

抽象クラスとは何ですか

ABCモジュールabstract_class

意図された使用

強制サブクラスは親クラスの統一基準に従わなければなりません

import abc

class Animal(metaclass=abc.ABCMeta):

    @abc.abstractmethod
    def eat(self):
        pass

    @abc.abstractmethod
    def drink(self):
        pass

    @abc.abstractmethod
    def speak(self):
        pass

class Pig(Animal):

    def eat(self):
        print('猪在吃饭')
        pass

    def drink(self):
        pass
    
    def speak(self):
        print('哼哼哼~~~')

    def run(self):
        pass

pig = Pig()

おすすめ

転載: www.cnblogs.com/samoo/p/11656062.html