python 子類與父類

2021-08-22 14:47:26 字數 3576 閱讀 1632

# -*- coding: utf-8 -*-

#建立乙個空類

class person():

pass

someone =person()

#加入初始化方法

class person():

def __init__(self):#第乙個引數必須為self

pass

#為初始化方法新增額外引數

class person():

def __init__(self,name):#初始化時需要加入引數

self.name = name

#在函式內部,用self.name可以訪問name屬性,在外部就需要用通過例項化的物件名來訪問,如hunter.name

hunter = person('elner fudd')

#step1:檢視person類的定義

#step2:在記憶體中例項化(建立)乙個新的物件

#step3:引數傳入

#step4:name的值傳送給物件

#step5:返回新的物件

#step6:將物件與hunter關聯起來

print hunter.name

#類的繼承

class car():

def exclaim(self):#self的意義,之後再寫

print('i am a car')

class yugo(car):

pass

#yugo是car的子類,繼承car的方法和功能

c = car()

y = yugo()

c.exclaim()

y.exclaim()

#覆蓋原方法

class car():

def __init__(self,name):

self.name = name

def exclaim(self):

print('i am ' + self.name)

class yogu():

def __init__(self,name):

self.name = name + '!'

def exclaim(self):

print('i am ' + self.name)

class motor():

def __init__(self,name):

self.name = name + '?'

def exclaim(self):

print('i am ' + self.name)

c = car('tom')

y = yogu('jerry')

m = motor('adams')

print(c.name)

print(y.name)

print(m.name)

c.exclaim()

y.exclaim()

m.exclaim()

#為 子類 新增新方法

class car():

def __init__(self,name):

self.name = name

class yugo(car):

def __init__(self,name):

self.name = name + '!'

def need_a_push(self,who):

print ('i need a push from' + who)

y = yugo('daddy')

print(y.name)

y.need_a_push('tom')

#子類的方法,父類無法訪問

#c = car('name')

#c.need_a_push('tom')

#'''traceback (most recent call last):

# file "/tmp/963057337/main.py", line 89, in # c.need_a_push('tom')

#attributeerror: car instance has no attribute 'need_a_push''''

#使用super()從父輩哪兒獲得幫助

class parent():

def __init__(self,name):

self.name = name

def exclaim(self):

print (self.name)

class kid(parent):

def __init__(self,name,gender):

# super().__init__(name)#將self自動傳遞給父類,因此只用傳遞其餘引數

self.name = name

self.gender = gender

def exclaim(self,who):

super().exclaim()

#同理,因為父類的exclaim方法只有self引數,所以不需要再傳入引數

#但是要保證self.name屬性存在

#相當於 def exclaim(self):

# print(self.name)

print('i am ' + who)

k = kid('alice','famale')

print(k.gender)

k.exclaim('admas')

**子類繼承父類方法的幾種形式

class a:

def method(self, arg):

return

class b(a):

def method(self, arg):

# a.method(self,arg) #1

# super(b, self).method(arg) #2

# super().method(arg) #3

#python3 使用方法3取代了較複雜的方法2

舉例來說:

class a():

def __init__(self,name,age):

self.name =name

self.age = age

def get_name(self):

print(self.name)

def get_age(self):

print(self.age)

class b(a):

def __init__(self,name,age):

a.__init__(self,name,age) #1

def get_name(self):

super(b,self).get_name() #2

def get_age(self):

super().get_age()

b = b('alice',55)

print(b.name)

print(b.age)

b.get_name()

b.get_age()

子類與父類,

public class a public virtual void testm2 public class b a public new void testm2 很多時候子類override是為了基類使用時可以有靈活的構造配置,多型 使用方總是基類物件所以如果子類有它自己的成員 包括new的成員函...

Python子類和父類

寫過程式的都知道類,就是物件導向的意思,程式設計的水平大致分為幾個層次,基本語法,函式,物件導向,資料結構,架構,越往上水平越高。在建立類的時候,我們通常把具有相關性的函式包裝為乙個類,類也可以巢狀,叫父類和子類,尤其在python中,所有的物件都可以當成乙個variable,下面給出乙個類巢狀的例...

java 子類與父類

1.父類 注 f m1 是父類不被繼承的方法 f m2 父類被子類重寫的方法 public class father public void f m1 public void f m2 2.子類 注 f m3是子類的私有方法 f m2 子類重寫父類方法 public class sunextends...