物件導向 6組合 抽象類 多型與多型性

2021-08-28 18:36:19 字數 4678 閱讀 6267

#組合

class people:

school='luffycity'

def __init__(self,name,age,***):

self.name = name

self.age = age

self.*** = ***

class teacher(people):

def __init__(self,name,age,***,level,salary):

super(teacher, self).__init__(name,age,***)

self.level=level

self.salary=salary

def teach(self):

print("%s is teaching"%self.name)

class student(people):

def __init__(self,name,age,***,class_time):

super(student, self).__init__(name,age,***)

self.class_time=class_time

def learn(self):

print('%s is learning'%self.name)

class course:

def __init__(self,course_name,course_price,course_period):

self.course_name=course_name

self.course_price=course_price

self.course_period=course_period

def tell_info(self):

print('課程名 課程** 課程週期'%(self.course_name,self.course_price,self.course_period))

class date:

def __init__(self,year,mon,day):

self.year=year

self.mon=mon

self.day=day

def tell_info(self):

print('%s-%s-%s '%(self.year,self.mon,self.day))

# teacher1=teacher('alex',18,'male',10,3000)

# teacher2=teacher('egon',18,'male',30,3000)

# python = course('python',2000,'3mons')

# linux=course('linux',3000,'4mons')

# print(python.course_name)

# teacher1.course=python

# teacher2.course=python

# print(python)

# print(teacher1.course)

# print(teacher2.course)

# teacher1.course.tell_info()

# student1=student('張三',29,'female','00:09:00')

# student1.course1=python

# student1.course2=linux

# student1.course1.tell_info()

# student1.course2.tell_info()

# student1.courses=

student1=student('張三',29,'female','00:09:00')

d=date(1998,2,30)

python = course('python',2000,'3mons')

student1.birth=d

student1.birth.tell_info()

student1.course=python

student1.course.tell_info()

抽象類

import abc

class animal(metaclass=abc.abcmeta):#只能被繼承,不能例項化

all_type='animal'

@abc.abstractmethod

def run(self):

pass

@abc.abstractmethod

def eat(self):

pass

# animal = animal()

class people(animal):

def run(self):

print('people is running')

def eat(self):

print('people is eating')

class pig(animal):

def run(self):

print('pig is running')

def eat(self):

print('pig is eating')

class dog(animal):

def run(self):

print('dog is zouing')

def eat(self):

print('dog is eating')

peo1=people()

pig1=pig()

dog1=dog()

peo1.eat()

pig1.eat()

dog1.eat()

print(peo1.all_type)

多型

#多型:同一種事物的多種形態

import abc

class animal(metaclass=abc.abcmeta):#只能被繼承,不能例項化

@abc.abstractmethod

def run(self):

pass

class people(animal):

def run(self):

print('people is running')

class pig(animal):

def run(self):

print('pig is running')

class dog(animal):

def run(self):

print('dog is zouing')

class cat(animal):

def run(self):

print('cat is zouing')

#多型性:指的是在可以不考慮物件的型別的情況下而直接使用物件

鴨子型別

#

## class file:

# def read(self):

# pass

## def write(self):

# pass

## class disk:

# def read(self):

# print('disk read')

## def write(self):

# print('disk write')

## class text:

# def read(self):

# print('text read')

## def write(self):

# print('text write')

## disk =disk()

# text=text()

## disk.read()

# disk.write()

## text.write()

# text.read()

#序列型別:列表list 、元組tuple、字串str

l=list([1,2,3])

t=tuple(('a','b''c'))

s=str('hello')

print(l.__len__())

print(t.__len__())

print(s.__len__())

def len(obj):

return obj.__len__()

print(len(l))

print(len(t))

print(len(s))

物件導向基礎2 多型 抽象類

抽象方法必須存在抽象類中,既抽象類和抽象方法需關鍵字abstract 繼承抽象類的子類,必須將父類中抽象方法全部重寫,除非該子類也是抽象類,因為抽象成員不能有任何實現 抽象方法不能有任何實現 方法體 抽象方法必須包含在抽象類中 抽象類不能被例項化 抽象類中可以包含抽象成員,也可以包含有具體 的成員 ...

抽象類 多型與介面

abstract 修飾的類為抽象類 方法為抽象方法。含有抽象方法,必被宣告為抽象類。抽象類不能例項化。不能修飾私有方法 構造器 靜態方法 final方法。final 修飾的類不能被繼承 修飾的方法不能被子類重寫 標記的變數名稱大寫且只能被賦值一次。介面介面中所有方法均為公共抽象方法。pulic ab...

Python 多型與抽象類

多型也稱 多型性 指的是同一種型別的事物,不同的形態。在python中的多型指的是讓多種類若具備類似的資料屬性與方法屬性,都統一好命名規範,這樣可以提高開發者的 統一性,使得呼叫者更方便去理解。為了在不知道物件具體型別的情況下,統一物件呼叫方法的規範 名字 父類 定製一套統一的規範。比如 方法名統一...