ディレクトリ
パイソン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()