21日目まとめ

組み合わせ

組み合わせは何ですか

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

なぜの組み合わせを使用

コードの冗長性を削減

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 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('tank',14,'male')
date_obj = Date(2005,1,1)
# date_obj.tell_birth()
# 将date对象赋值到tea1对象的date属性中
tea1.date = date_obj

要約:

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

コンビネーション:オブジェクトとオブジェクト間の関係、オブジェクト間の関係は、別のオブジェクトを持っているものの種類

パッケージ

パッケージとは何ですか

メタファー:

シール:例えば、最大密封された袋

パッキング:例えば、袋にロードさ猫と犬の束を置きます

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

目的は、「」プロパティの方法を得ることが格納されたデータオブジェクトを取得することです

アナロジー:バッグはパイルの特性の中にあった袋のようなオブジェクト、

なぜパッケージ

目的は、オブジェクトが属性によって取得することができる、パッケージへのアクセスを容易にすることである。モード属性

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

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

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

属性(特性やスキル)の束を定義するクラスの中で。

オブジェクト。プロパティの属性値を通じ=

アクセス制限メカニズム

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

クラスの定義の中で、__性質で始まるデータ属性とメソッドすべてが、非表示になります

内部、外部には、直接クラスのプロパティにアクセスすることはできません

たとえば、次のように__name =「タンク」

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

プライバシーの束は、属性および属性を簡単に外部からアクセスできません、影を非表示にすることができ、直接外部を呼び出しません

利点:

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

インタフェース:プライバシーは、インタフェースパッケージを経由して属性インターフェース内のビジネス・ロジックを行い、その後、

データは、呼び出し元に返されます

注意:Pythonで、__財産の初めにクラス内で、プロパティへのアクセスの制限を強制するが、変形を行っていません

直接アクセスのために、変形を呼び出します

class Foo:
    __name = 'tank'  # --> __类名__属性名
    
    
# 例如:ATM
class ATM:
    # 1.插卡
    def __insert_card(self):
        print('插卡')
        pass

    # 2.输入密码
    def __input_pwd(self):
        print('密码验证')
        pass

    # 3.输入取款金额
    def __input_money(self):
        print('输入金额')
        pass

    # 4.开始吐钱
    def __get_money(self):
        print('执行吐钱')
        pass

    # 5.打印账单
    def __print_flow(self):
        print('打印账单')
        pass

    # 取钱直接接口
    def withdraw(self):
        self.__insert_card()
        self.__input_pwd()
        self.__input_money()
        self.__get_money()
        self.__print_flow()
        print('取款程序执行完毕!')


atm = ATM()
atm.withdraw()

プロパティ

プロパティとは何ですか

Pythonのデコレータは、主にクラス内のメソッドを使用するように、構築されました。

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

それを使用する目的は、この方法は、内部クラスであります

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

@property

class People:
    def __init__(self,name,weight,height):
        self.name = name
        self.weight = weight
        self.height = height
        
    @property
    def bmi(self):
        return self.weight/(self.height*self.height)
    
    # 了解
    @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('jason', 200, 1.6)

注意:あなたは、装飾されたプロパティの方法を変更することはできません

学ぶ:私たちは、この方法で変更されたプロパティを変更する必要があれば、修正するための別の方法かもしれません

print(p.get_name)
p.set_name = 'tank'
print(p.get_name)
# p.del_name()
# print(p.get_name)
del p.del_name
print(p.get_name)

ポリモーフィズム

何多型であります

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

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

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

多型の目的は、同じ関数の場合に、同じ名前のメソッド名を呼び出し、オブジェクトの様々な異なるタイプのを可能にすることです

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

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

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

どのように達成するために

受け継ぎます

注意:pythonではなく、必須サブクラスは親クラスの標準セットを遵守しなければならないので、抽象クラスがあります

抽象クラス

何ですか

ABCモジュールabstract_class

の目的

強制サブクラスは親クラスの標準セットを遵守しなければなりません

使い方

輸入ABC

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()

アヒルタイプ

タイプのアヒルは何ですか

オブジェクトは、私にはわからないことですが、あなたはアヒルのように見える場合、あなたはアヒルの一種であります

アヒルは、サブクラス定義された制限を適用Pythonで抽象クラスを使用することをお勧めしませんが、サブクラスは、鴨の種類に従ってください

# 猪
class Pig:
    # 吃
    def eat(self):
        print('猪在吃饭')
        pass
    # 喝
    def drink(self):
        pass
    def speak(self):
        print('哼哼哼~~~')

# 猫
class Cat:
    # 吃
    def eat(self):
        print('猫在吃饭')
        pass
    # 喝
    def drink(self):
        pass
    def speak(self):
        print('喵喵喵~~')

# 狗
class Dog:
    # 吃
    def eat(self):
        print('狗在吃饭')
        pass
    # 喝
    def drink(self):
        pass
    def speak(self):
        print('汪汪汪~~~')

継承:

高い、貧しい人々スケーラビリティをカップリング

アヒルの種類:

低カップリング、強力なスケーラブルな手順

ポリモーフィックオペレーティングxuanji

# 猪
class Pig:
    # 吃
    def eat(self):
        print('猪在吃饭')
        pass
    # 喝
    def drink(self):
        pass
    def speak(self):
        print('哼哼哼~~~')

# 猫
class Cat:
    # 吃
    def eat(self):
        print('猫在吃饭')
        pass
    # 喝
    def drink(self):
        pass
    def speak(self):
        print('喵喵喵~~')

# 狗
class Dog:
    # 吃
    def eat(self):
        print('狗在吃饭')
        pass
    # 喝
    def drink(self):
        pass
    def speak(self):
        print('汪汪汪~~~')

dog = Dog()
cat = Cat()
pig = Pig()

def BARK(animal):
    animal.speak()

BARK(dog)
BARK(cat)
BARK(pig)


str1 = '1234'
list1 = [1, 2, 3]

print(str1.__len__())
print(list1.__len__())

def LEN(d):
    return d.__len__()

print(LEN(str1))
print(LEN(list1))

print(len(str1))
print(len(list1))

おすすめ

転載: www.cnblogs.com/LZF-190903/p/11656008.html