1. 程式人生 > 其它 >Python之類、方法、繼承

Python之類、方法、繼承

一、類

面向過程的語言:C語言

谷歌:C,Python,Java,Js,Go

1、什麼是面向物件?

所謂的面向物件,其實是指:站在上帝的視角下,世界萬物一切皆物件,把擁有共同的屬性歸為一類,這就是class的由來

2、類的定義:class

類的名稱首字母必須是大寫的

3、類裡面有那些東西?

A、屬性

B、方法(就是之前學習的函式)

4、類裡面的屬性以及方法,呼叫的前提是首先要對類進行例項化處理

object是所有類的物件,可以說是類的祖先

類的內部的show是一個方法,self指的是類本身自己

obj:1、它是一個變數,2、它是類的物件

class Person(object):#建立類,類名稱的首字母必須是大寫,括號裡面是類的基類
def show(self):#建立類中的函式時(self)是特殊引數,必須要寫
print("hello") #函式的表示式
obj=Person()# 把類進行例項化 
obj.show() # 用物件呼叫類Person中的函式

5、類例項化的過程中必須呼叫__init__方法(初始化),必須要賦值的

構造方法:針對類初始化的時候必須要對構造方法裡面的例項屬性賦值

__init__() 方法的第一個引數必須是 self

format:格式

class Person(object):
   def __init__(self,name,age):
      self.name=name
      self.age
=age def show(self): print("my name is {0} and my age is {1}".format(self.name,self.age)) obj=Person(name="wp",age=22) # 類的例項化 obj.show()

 

6、資料屬性:類似於全域性變數

只能通過類名(Person)或者類的物件(obj定義的內容)呼叫

# obj可以理解為類的物件,也可以將他理解為一個變數,所以obj可以簡單的理解為給類定義的物件
# 類中例項方法呼叫的方式:

# 第一種:物件、方法,也就是類物件呼叫類的方法。
obj=person(name="
wp",age=22) name="wp",age=22是對例項屬性賦值的過程,obj第一個物件。 obj.name()——呼叫方法,呼叫的是name的方法。 obj2=person(name="wt",age=22) name="wt",age=22是對例項屬性賦值的過程,obi2第二個物件。 obj2.name()——呼叫方法,呼叫的是name的方法 #第二種:類/方法(self,引數值),此方式需要手動給 self 引數傳值,也就是類名直接呼叫類的方法。 obj1=person(name="wp",age=22) person.name(obj1)

 

class Person(object):
# 資料屬性,只能通過類名或者類的物件呼叫
    city="西安"
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def show(self):
        print("my name is {0} and my age is {1},city is {2}".format(self.name,self.age,self.city))

obj=Person(name="wp",age=22)
obj.show()

# 對資料屬性而言,使用類以及類物件呼叫,記憶體地址都是一致的
print(id(Person.city))
print(id(obj.city))

 

7、呼叫方法執行順序

1、執行構造方法

2、執行真正呼叫的方法

3、執行析構方法

class Person(object):
   city="西安"
   def __init__(self,name,age):
      self.name=name
      self.age=age
   print("初始化")

   def show(self):
      print("my name is {0} and my age is {1},city is {2}".format(self.name,self.age,self.city))
# 析構方法,價值:清理
   def __del__(self):
      print("清理")
obj=Person(name="wp",age=22)
obj.show()

 

二、方法(method)

1、普通方法

如show(),info()

class Person(object):
   def __init__(self,name,age):
      self.name=name
      self.age=age
   def show(self): #封裝一個檢視Person屬性的函式
      print("name:{0} age:{1}".format(self.name,self.age))

obj=Person(name="wp",age=22) #把類Person例項化為obj
obj.show() #呼叫方法

 

2、特性方法

只具備只讀屬性,不能寫(這個方法中不能有形式引數)

呼叫特性方法的時候,沒有括號

類內部定義的以@staticmethod裝飾的函式,類方法的呼叫關係可以通過print後的表述得知,輸出結果

# 特性方法
class Person(object):
   def __init__(self,name,age):
      self.name=name
      self.age=age
   @property #裝飾器
   def show(self):
      return "name:{0} age:{1}".format(self.name,self.age)

obj=Person(name="wp",age=22) #把類Person例項化為obj
print(obj.show) #呼叫方法

 

3、靜態引數

理解為全域性變數,但是不能等價於全域性變數,靜態方法的特點是使用類名來直接呼叫

靜態方法(staticmethod)中不能夠呼叫例項屬性

@property裝飾器

getInfo:獲取資訊

# 靜態方法
class Person(object):
def __init__(self,name,age):
self.name=name
self.age=age

@staticmethod #裝飾器
def show():
return {"name":"wp","age":22}

print(Person.show())

三、繼承

1、Java與Python的繼承區別

1.1、Python是一個類可以繼承N個類

1.2、Java只能繼承一個類

2、概念

2.1、基類(父類):被繼承的類

2.2、派生類(子類):繼承其他的類

在實戰中Animal是父類,Person是子類

子類繼承父類的例項屬性,兩種方式:

第一種方式:

super().__init__(name,age)

第一種方式:

Animal.__init__(self,name,age)

self.work=work

3、父類繼承子類的內容

1、資料屬性

2、例項屬性

3、方法

# 父輩繼承子類方法
class Animal(object):
address="地球"

def __init__(self,name,age):
self.name=name
self.age=age

def show(self):
return "name:{0},age:{1}".format(self.name,self.age)

class Person(Animal):
def __init__(self,name,age,work):
Animal.__init__(self,name,age)
self.work=work

def show(self):
print("person中的方法")

obj=Person(name="wp",age=22,work="測試")
obj.show()# 類B中本來是沒有這個方法的,但是它繼承了A類,所以可以直接呼叫A類中的方法

4、繼承的原則

1、從左到右

2、從下到上

前提條件:子類重寫了父類的方法,那麼呼叫父類以及子類共同擁有的方法的時候,優先呼叫子類自己的方法

5、方法重寫

當父類的方法沒有辦法滿足子類的需求的時候,那麼子類就會重寫了父類的方法

# 父輩資訊
class
Animal(object): address="地球" def __init__(self,name,age): self.name=name self.age=age def show(self): return "name:{0},age:{1}".format(self.name,self.age)
# 子輩資訊
class Person(Animal): def __init__(self,name,age,work): Animal.__init__(self,name,age) self.work=work def info(self): print("來自:{0},資訊:{1}".format(self.address,self.show())) def show(self): print("person中的方法") obj=Person(name="wp",age=22,work="測試") obj.show()

 

錯誤的繼承方式

父類與子類在呼叫時,不可以同時出現在同一方法中,否則會報錯