首頁  >  文章  >  後端開發  >  Python中的class類別和method方法的使用方法

Python中的class類別和method方法的使用方法

PHPz
PHPz轉載
2023-04-21 14:28:161960瀏覽

類別和方法的概念和實例

  • 類別(Class):用來描述具有相同的屬性和方法的物件的集合。它定義了該集合中每個物件所共有的屬性和方法。物件是類別的實例。

  • 方法:類別中定義的函數。

  • 類別的建構方法__init__():類別有一個名為init() 的特殊方法(建構方法),該方法在類別實例化時會自動呼叫。

  • 實例變數:在類別的宣告中,屬性是用變數來表示的,這種變數就稱為實例變量,實例變數就是用self修飾的變數。

  • 實例化:建立一個類別的實例,類別的具體物件。

  • 繼承:即一個衍生類別(derived class)繼承基底類別(base class)的欄位和方法。繼承也允許把一個衍生類別的物件當作一個基底類別物件。例如,有這樣一個設計:一個Dog類型的物件派生自Animal類,這是模擬"是一個(is-a)"關係(例圖,Dog是一個Animal)。

 1.python類別:class

python的class(類別)相當於一個由多個函數組成的家族,如果在這個Myclass大家族裡有一個人叫f,假如這個f具有print天氣的作用,那麼如果有一天我需要這個f來print一下今天的天氣,那麼我必須叫他的全名MyClass.f才可以讓他給我print,即在調用他的時候需要帶上他的家族名稱他的名稱。

  • 屬性:屬性就是在這個類別裡的變數。如果變數是物品,那麼不同的屬性就是這個大家族裡不同的物品

  • #方法:方法就是在這個類別裡的函數。如果函數是人,那麼不同的方法就是這個大家族裡不同的人。

 MyClass實例:

#Myclass家族,但是这个家族只有一个人f
class MyClass:   
  """一个简单的类实例"""    
  i = 12345    
  def f(self):        
    return 'hello world'
# 实例化类
x = MyClass() 
# 访问类的属性和方法
print("MyClass 类的属性 i 为:", x.i) #家族x + 物品名i
print("MyClass 类的方法 f 输出为:", x.f()) #家族x + 人名f

輸出結果:

Python中的class類別和method方法的使用方法

#2.類別的建構方法

__init__()

假如init()也是人,但是他是家族和外界聯絡員,當外界的人想呼叫自己家族的人,就必須先告訴他,所以只要家族的人被調用,那麼init()就會被先執行,然後由他去告訴那個被調用的人,執行被調用的。

init()實例:

class Complex:
    def __init__(self, realpart, imagpart): #必须要有一个self参数,
        self.r = realpart
        self.i = imagpart
x = Complex(3.0, -4.5)
print(x.r, x.i)   # 输出结果:3.0 -4.5
Python中的class類別和method方法的使用方法

輸出結果:

##3.類別中方法的參數

self
  • 在類別的內部,使用def 關鍵字定義一個方法,與一般函數定義不同,類別方法必須包含參數self, 且為第一個參數,self代表的是類別的實例。

  • self

    :類別的方法與普通的函數只有一個特別的區別——必須有一個額外的第一個參數名稱, 按照慣例它的名稱是self。

類別的實例

:是將類別應用在實例場景之中,例如有個類別裡的函數是f,假如這個f具有print某一時刻的天氣狀況的能力,那麼如果我需要這個f來print一下今天12點的天氣,那麼讓他打印今天12點的天氣這個動作,就是類的實例化,讓類中的函數具有的能力變成真實的動作。

實例化實例

#类定义
class people:
    #定义基本属性
    name = ''
    age = 0
    #定义私有属性,私有属性在类外部无法直接进行访问
    #定义构造方法
    def __init__(self,n,a):
        self.name = n
        self.age = a
    def speak(self):
        print("%s 说: 我 %d 岁。" %(self.name,self.age))

# 实例化类
p = people('Python',10,30)
p.speak()

Python中的class類別和method方法的使用方法#輸出結果:

##4.繼承
  • 假如有兩個家族,有一個家族A開始沒落了,另一個新興的家族B想繼承A家族的物資和傭人,那麼就可以通過如下的方式實現繼承,在這裡,家族A即是父類,家族B是子類。在用法上,如果B家族可以任意使用A家族的物品和傭人。

    class [子类]([父类]):

  • BaseClassName
  • (範例中的基底類別名稱)必須與衍生類別定義在一個作用域內。除了類,還可以用表達式,基類定義在另一個模組中時這一點非常有用。

    python也支援
  • 多重繼承
,也就是可以繼承多個父類別。繼承方式和單一繼承方式一樣,方式如下:

class [子类]([父类]1, [父类]2, [父类]3):

繼承實例:

#类定义
class people:
    #定义基本属性
    name = ''
    age = 0
    #定义私有属性,私有属性在类外部无法直接进行访问
    __weight = 0
    #定义构造方法
    def __init__(self,n,a,w):
        self.name = n
        self.age = a
        self.__weight = w
    def speak(self):
        print("%s 说: 我 %d 岁。" %(self.name,self.age))

#单继承示例
class student(people): #student为子类,people为父类
    grade = ''
    def __init__(self,n,a,w,g):
        #调用父类的构函
        people.__init__(self,n,a,w)
        self.grade = g
    #覆写父类的方法
    def speak(self):
        print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))

s = student('ken',10,60,3)
s.speak()

##執行結果:

Python中的class類別和method方法的使用方法

######

5.方法重写

如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法。即如果B家族继承了A家族,但是B家族有个佣人只会扫地,于是A家族给这个人洗脑,让他啥都不会,然后再教这个佣人洗碗、擦桌子的技能,那么这个佣人就只会洗碗和擦桌子了。

  • super()函数是用于调用父类(超类)的一个方法。

 方法重写实例:

class Parent:        # 定义父类
   def myMethod(self):
      print('调用父类方法')

class Child(Parent): # 定义子类
   def myMethod(self):
      print('调用子类方法')

c = Child()          # 子类实例
c.myMethod()         # 子类调用重写方法
super(Child,c).myMethod() #用子类对象调用父类已被覆盖的方法

输出结果:

Python中的class類別和method方法的使用方法

类的特殊属性与方法

类的私有属性

  • _private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。

 私有属性实例:

class JustCounter:
    __secretCount = 0  # 私有变量
    publicCount = 0    # 公开变量

    def count(self):
        self.__secretCount += 1
        self.publicCount += 1
        print(self.__secretCount)

counter = JustCounter()
counter.count()
counter.count()
print(counter.publicCount)
print(counter.__secretCount)  # 报错,实例不能访问私有变量

输出结果:

Python中的class類別和method方法的使用方法

类的私有方法

  • __private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用。self.__private_methods。

 私有方法实例:

class Site:
    def __init__(self, name, url):
        self.name = name       # public
        self.__url = url   # private

    def who(self):
        print('name  : ', self.name)
        print('url : ', self.__url)

    def __foo(self):          # 私有方法
        print('这是私有方法')

    def foo(self):            # 公共方法
        print('这是公共方法')
        self.__foo()

x = Site('Python', 'www.irvingao.com')
x.who()        # 正常输出
x.foo()        # 正常输出
x.__foo()      # 报错

输出结果:

Python中的class類別和method方法的使用方法

以上是Python中的class類別和method方法的使用方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除