五 物件導向(二) 繼承與重寫

2022-07-28 16:24:28 字數 4481 閱讀 3913

1) import+模組名   常規匯入,直接匯入整個包的所有的功能函式。
import math

import os

import sys

# 以上可簡寫為:

import math,os,sys

2) from ... import ... 語句
把乙個模組的所有內容全都匯入到當前的命名空間也是可行的,只需使用如下宣告:

from pandas import series

from pandas import dataframe as df # 可以起別名

#以上可以簡寫

from pandas import series,dataframe as df

#父類

class a(object):

def __init__(self):

self.num = 10

def print_num(self):

print(self.num + 10)

#子類class b(a):

pass

b= b()

print(b.num)

b.print_num()

概念:子類只繼承乙個父類

class person(object):

def __init__(self):

self.name = "女媧"

def make_person(self):

print('{}製造了人類'.format(self.name))

class teacher(person):

# 子類可以繼承父類所有的屬性和方法,哪怕子類沒有自己的屬性和方法,也可以使用父類的屬性和方法

pass

panda = teacher() # 建立子類例項物件

print(panda.name) # 子類例項物件可以直接使用父類的屬性

panda.make_person() # 子類例項物件可以直接使用父類的方法

概念:子類繼承多個父類

class women(object):

def __init__(self):

self.name = '女媧'

def make_person(self):

print('{}製造了人類'.format(self.name))

def move(self):

print("移動..")

class man(object):

def __init__(self):

self.name = '亞當'

def make_a_person(self):

print('{}製造了乙個人'.format(self.name))

def run(self):

print("跑..")

class person(women, man):

pass

ls = person()

print(ls.name)

ls.make_person()

ls.make_a_person()

總結:如果多個父類中有同名的屬性和方法,則預設使用第乙個父類的屬性和方法,多個父類中不重名的屬性和方法,不會有任何影響。

重寫:子類繼承父類,父類的方法不滿足子類的需求,可以對父類的方法進行重寫。

class person(object):

def run(self):

print('跑起來了')

class student(person):

def __init__(self, name, age):

self.name = name

self.age = age

def run(self):

print("歲的跑起來了".format(age=self.age, name=self.name))

stu1 = student('max',18)

stu1.run()

# partents.py

#表示from 模組名 import * 只能使用指定的功能**,而不是所有的功能**,

__all__ = ['g_num','show','teacher']

#定義乙個全域性變數

g_num = 10

#定義乙個函式

def show():

print('我是乙個函式')

#定義乙個類

class teacher(object):

#建構函式

def __init__(self,name,age):

self.name = name

self.age = age

def show_info(self):

#入口函式

if __name__ =='__main__':

teacher('jack',40).show_info()

#child.py

from parents import *

show()

print(g_num)

stu = teacher('jack',18).show_info()

# 子類不重寫父類的構造方法,子類新增了自己的例項方法

class student(teacher):

#子類新增了自己的例項方法

def info(self,hobby):

print("student hobby is {}".format(hobby))

stu = student('max','18')

# 子類呼叫自己的相關方法

stu.info('learning')

#子類呼叫父類中繼承過來的方法:

stu.show_info()

#子類重寫父類中的例項方法

class student(teacher):

#子類新增了自己的例項方法

def info(self,hobby):

print("student hobby is {}".format(hobby))

def show_info(self):

print("我重寫了父類teacher中的show_info方法")

stu = student('leon','18')

#子類呼叫重寫過的show_info方法:

stu.show_info()

# 子類重寫父類的構造方法

class student(teacher):

def __init__(self,students_name,students_age):

self.students_name = students_name

self.students_age = students_age

#子類新增了自己的例項方法

def info(self,hobby):

print("student hobby is {}".format(hobby))

# 子類呼叫自己的相關方法

stu = student('max','18')

print(stu.students_name)

stu.info('leaning')

class student(teacher):

def __init__(self,students_name,students_age):

super(student,self).__init__(students_name,students_age)

self.students_name = students_name

self.students_age = students_age

#子類新增了自己的例項方法

def info(self,hobby):

print("student hobby is {}".format(hobby))

def intr_stu(self):

print("歲的介紹自己的愛好是玩".format(students_age=self.students_age,students_name=self.students_name))

def intr_teach(self,hobby):

print("歲的老師介紹自己的愛好是".format(age=self.age,name=self.name,hobby=hobby))

# 子類呼叫自己例項屬性對應的例項方法

stu = student('max',18)

stu.intr_stu()

#子類自己的例項方法呼叫其父類所對應的例項屬性

stu = student('jack',30)

stu.intr_teach("看電影")

php基礎(五)物件導向

面象對向的三大特點 封裝性 繼承性 多型性 首先簡單理解一下抽象 我們在前面定義乙個類的時候,實際上就是把一類事物共有的屬性和行為提取出來,形成乙個物理模型 模版 這種研究問題的方法稱為抽象 一 封裝性 封裝就是把抽取出來的資料和對資料的操作封裝在一起,資料被保護在內部,程式的其他部分只有被授權的操...

php學習之五(物件導向)

在物件導向的程式設計 英語 object oriented programming,縮寫 oop 中,物件是乙個由資訊及對資訊進行處理的描述所組成的整體,是對現實世界的抽象。變數 this代表自身的物件。php eol為換行符.類屬性必須定義為公有,受保護,私有之一。如果用 var 定義,則被視為公...

(五)物件導向的設計原則之一

一 總綱 1 物件導向的五大原則 單一職責原則 介面隔離原則 開放 封閉原則 替換原則 依賴倒置原則。二 單一職責原則 1 就乙個類而言只有乙個引起它變化的原因即為 單一職責原則。2 單一職責有兩個含義 a.避免相同的職責分散到不同的類 b.避免乙個類承擔太多的職責 3.遵循單一職責原則的原因 減少...