詳細Pythonのインスタンスオブジェクト指向継承

本論文では、オブジェクト指向の継承クラスのPythonの例を説明します。以下のように、ご参考のためにあなたに共有します:

I.概要
オブジェクト指向プログラミング(OOP)言語の主な特徴の一つは、「継承」されます。継承は、そのような能力を意味する:それは、既存のクラスのすべての機能を使用し、これらの機能を書き換えることなく、元のクラスの場合に拡張することができます。

「サブクラス」または「派生クラス」と呼ばれるプロセスを継承して新しいクラスを作成し、一般的なものから特定のプロセスに「ベースクラス」である「親」または「スーパー」、相続、と呼ばれる継承クラス。特定のOOP言語では、サブクラスは、ベース複数のクラスを継承します。しかし、通常の状況下では、サブクラスは、多重継承によって達成することができ、複数の継承を実装するための唯一の基本クラスを持つことができます。

継承、インターフェースの継承:継承の概念の実装は、主に2種類あります。

継承は、余分なコード容量特性と基本クラスのメソッドを使用せずに達成指します。

インターフェイスの継承は名前のみを使用してプロパティとメソッドを参照していますが、サブクラスが達成する能力(クラス父親再構成法のサブクラス)を提供しなければなりません。

継承の使用を考慮すると、一つのことは、2つのクラス間の関係が関係「の一部」であることを注意します。例えば、従業員が一人で、マネージャは人間であるので、これら2つのクラスがPersonクラスを継承することができます。脚は人間ではないので、しかし、脚クラスは、Personクラスを継承することはできません。

おおよそOO開発パラダイム:階層構造(継承及び合成)として編成抽象クラス分割→→オブジェクトクラス例→クラス設計と実装ステージを有します。

第二に、クラス継承
2.1継承の定義

class Person(object):  # 定义一个父类
  def talk(self):  # 父类中的方法
    print("person is talking....")
class Chinese(Person):  # 定义一个子类, 继承Person类
  def walk(self):   # 在子类中定义其自身的方法
    print('is walking...')
c = Chinese()
c.talk()   # 调用继承的Person类的方法
c.walk()   # 调用本身的方法

出力:

person is talking....
is walking...

コンストラクタ継承2.2
サブクラスとどのように独自のプロパティを定義する一方で、我々は質量参加Cの例を与えるならば、我々は、コンストラクタ、継承するかのコンストラクタを使用する必要がありますか?

コンストラクタクラスの継承:

1.クラシック言葉遣い:親の名前のinit(セルフ、パラメータ1、パラメータ2、...)

  1. 新しいクラスを書く:.スーパー(サブクラス、セルフ)のinit(パラメータ1、パラメータ2、...)
class Person(object):
  def __init__(self, name, age):
    self.name = name
    self.age = age
    self.weight = 'weight'
  def talk(self):
    print("person is talking....")
class Chinese(Person):
  def __init__(self, name, age, language): # 先继承,在重构
    Person.__init__(self, name, age) #继承父类的构造方法,也可以写成:super(Chinese,self).__init__(name,age)
    self.language = language  # 定义类的本身属性
  def walk(self):
    print('is walking...')
class American(Person):
  pass
c = Chinese('bigberg', 22, 'Chinese')

我々は、単に再建で、実際には、中国でのサブクラスでコンストラクタ関数を定義する場合。このようなサブクラスは親クラスのプロパティを継承することはできません。私たちが最初にして建設をコンストラクタサブクラス継承を定義するときに、私たちは、親クラスのプロパティを取得することができます。

次のように親クラスのコンストラクタをベースサブクラスのコンストラクタ:

オブジェクトc ----> Cコールサブクラス__init __()---->サブクラス__init __()を継承親__init __()の例としては----->親クラスを呼び出すのinit()

2.3サブクラスは親クラスのメソッドをオーバーライドし
、我々はサブクラスで再構成することができる基本クラス/親クラスを、変更する必要がある場合は、。話して、次の()メソッド

class Person(object):
  def __init__(self, name, age):
    self.name = name
    self.age = age
    self.weight = 'weight'
  def talk(self):
    print("person is talking....")
class Chinese(Person):
  def __init__(self, name, age, language):
    Person.__init__(self, name, age)
    self.language = language
    print(self.name, self.age, self.weight, self.language)
  def talk(self): # 子类 重构方法
    print('%s is speaking chinese' % self.name)
  def walk(self):
    print('is walking...')
c = Chinese('bigberg', 22, 'Chinese')
c.talk()

出力:

bigberg 22 weight Chinese
bigberg is speaking chinese

第三に、クラス継承の例

class SchoolMember(object):
  '''学习成员基类'''
  member = 0
  def __init__(self, name, age, sex):
    self.name = name
    self.age = age
    self.sex = sex
    self.enroll()
  def enroll(self):
    '注册'
    print('just enrolled a new school member [%s].' % self.name)
    SchoolMember.member += 1
  def tell(self):
    print('----%s----' % self.name)
    for k, v in self.__dict__.items():
      print(k, v)
    print('----end-----')
  def __del__(self):
    print('开除了[%s]' % self.name)
    SchoolMember.member -= 1
class Teacher(SchoolMember):
  '教师'
  def __init__(self, name, age, sex, salary, course):
    SchoolMember.__init__(self, name, age, sex)
    self.salary = salary
    self.course = course
  def teaching(self):
    print('Teacher [%s] is teaching [%s]' % (self.name, self.course))
class Student(SchoolMember):
  '学生'
  def __init__(self, name, age, sex, course, tuition):
    SchoolMember.__init__(self, name, age, sex)
    self.course = course
    self.tuition = tuition
    self.amount = 0
  def pay_tuition(self, amount):
    print('student [%s] has just paied [%s]' % (self.name, amount))
    self.amount += amount
t1 = Teacher('Wusir', 28, 'M', 3000, 'python')
t1.tell()
s1 = Student('haitao', 38, 'M', 'python', 30000)
s1.tell()
s2 = Student('lichuang', 12, 'M', 'python', 11000)
print(SchoolMember.member)
del s2
print(SchoolMember.member)

出力:

----end-----
just enrolled a new school member [haitao].
----haitao----
age 38
sex M
name haitao
amount 0
course python
tuition 30000
----end-----
just enrolled a new school member [lichuang].
3
开除了[lichuang]
2
开除了[Wusir]
开除了[haitao]

、そして最終的に公共機関[プログラマ]の数では良い評判をお勧めする方法多くのより多くのコンテンツ、古いタイマー、スキルを学習体験、インタビューのスキル、職場体験や他のシェアを学習がたくさんある、より多くの我々は慎重に準備ゼロベース実際のプロジェクトデータの入門情報、毎日、細部に学習し、注意を払う必要性にする方法のいくつかを共有するために、Pythonのプログラマの技術のタイミングを説明するために、私は注意を覚えています
ここに画像を挿入説明

公開された30元の記事 ウォンの賞賛0 ビュー10000 +

おすすめ

転載: blog.csdn.net/chengxun02/article/details/105016995