Python面向對象之類和對象

定義類

  • 所有類名首字母要求大寫,多個單詞時遵循駝峰命名法
  • 所有未定義父類的類都繼承object

格式:class 類名[(父類)]:

#兩種方式意思相同
class Person:
    pass 
class Person(object):
    pass

定義類和屬性

name、age、subject就是類屬性

class Student:
    #類屬性
    name = ''
    age = 0
    subject = []

類中方法

對象方法(普通方法)

格式:
def 方法名(self[,parm1,parm2...]):
    pass

self就是對象本身

class Student:
    # 類屬性
    name = 'student'
    age = 0
    subject = []
   # 普通方法
    def study(self):
        print(self.name, '正在學習...') 
xiaoming = Student()
xiaoming.name = 'xiaoming'
xiaoming.study() 

————
輸出:
xiaoming 正在學習…

class Student:
    # 類屬性
    name = 'student'
    age = 0
    subject = []
   # 普通方法
    def study(self, name):
        print(name, '正在學習...') 
s1 = Student()
s1.study('xiaohong')
 

—————-
輸出:
xiaohong 正在學習…

類方法

格式:
@classmethod
def 方法名(cls):
    pass
  • 類方法使用@classmethod裝飾器
  • 對象方法傳入的是self,類方法傳入的是cls
  • 類方法可以直接用類調用,或者可以用類的實例(對象)調用
class Dog:
    dog_type = '阿拉斯加'
   def __init__(self, nickname):
        self.name = nickname
   def dog_run(self):
        print('{}在公園裡跑.看起來是一隻{}.'.format(self.name, self.dog_type))
   @classmethod
    def dog_sit(cls):
        print(cls.dog_type, '很乖,坐下瞭') 
dog1 = Dog('肉丸')
dog1.dog_type = '小泰迪'
dog1.dog_run()
Dog.dog_sit() 

————–
輸出:
肉丸在公園裡跑.看起來是一隻小泰迪.
阿拉斯加 很乖,坐下瞭

靜態方法

  • 靜態方法使用裝飾器@staticmethod
  • 靜態方法沒有參數
  • 當方法跟類屬性和對象屬性都沒有關系的時候,使用靜態方法
  • 支持對象和類名直接調用
class Dog:
    def __init__(self, nickname):
        self.name = nickname
   @staticmethod
    def dog_sit():
        print('很乖,坐下瞭') 
dog1 = Dog('肉丸')
dog1.dog_sit()
Dog.dog_sit() 
---------------------

輸出:
很乖,坐下瞭
很乖,坐下瞭

魔術方法

格式:
def __方法名__(self):
    pass

__init__() 構造函數

  • 如果沒有__init__。直接利用類向內存申請一個和類一樣的空間,給到對象。
  • 如果有__init__。利用類向內存申請一個和類一樣空間,內存空間(self)傳遞給__iniy__,執行__init__的函數。最後將內存空間給到對象。

對象

創建對象

格式:對象名 = 類名()

class Student:
    #類屬性
    name = ''
    age = 0
    subject = [] 
xiaoming = Student()

對象屬性

  • 當創建瞭對象時,對象會繼承類的屬性。獲取屬性的時候,也是從類中獲取屬性。
  • 當對默認的類屬性賦值後(對象名.屬性 = xxxx),屬性才會變成對象屬性。
class Student:
    # 類屬性
    name = 'student'
    age = 0
    subject = [] 
xiaoming = Student()
print('類屬性:', xiaoming.name)  # 此時是從類中獲取的類屬性
xiaoming.name = 'xiaoming'  # 因為賦值瞭,此時變成瞭對象屬性
print('對象屬性:', xiaoming.name) 
-------------

輸出:
類屬性: student
對象屬性: xiaoming

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: