日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Day 8 面向对象

發布時間:2025/3/21 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Day 8 面向对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對象,是對事物的抽象,包含了事物的一些屬性,和動作。

類示例

class Person(object):# 定義基本屬性, 外部可訪問name = ''# 定義保護屬性,只有類本身和子類可以訪問_sex = 'male'# 定義私有屬性,只有類本身可以訪問__weight = 0# __init__是一個特殊方法用于在創建對象時進行初始化操作# 通過這個方法我們可以為學生對象綁定name和age兩個屬性def __init__(self, name, age):self.name = nameself.age = age# 方法之間要空出一行(編碼規范)def speak(self, message):print("%s 說: %d。" % (self.name, message))# 方法名用全小寫多個單詞用下劃線連接(編碼規范)def watch_av(self):if self.age < 18:print('%s只能觀看《熊出沒》.' % self.name)else:print('%s正在觀看動作片.' % self.name)# 和上面代碼有縮進差別,要空出兩行(編碼規范) def main():# 創建Person對象并指定姓名和年齡p1 = Person('駱昊', 38)# 調用對象方法speak, 并傳入參數p1.speak('我要學Python')# 調用對象方法 watch_avp1.watch_av()

?

繼承

class Student(Person):grade = ''# 子類的構造函數def __init__(self, n, a, g):# 調用父類的構造函數Person.__init__(self, n, a)self.grade = g# 覆寫父類的方法def speak(self, message):print("%s 說: %d ,我已經在讀 %d 年級" % (self.name, message, self.grade))def main2():# 創建學生對象并指定姓名和年齡stu1 = Student('王峰', 18)# 調用對象方法speak, 并傳入參數, 因為復寫了父類方法,所以以子類格式輸出stu1.speak('我要學Python')

?

@property裝飾器

@property包裝器來包裝getter和setter方法,使得對屬性的訪問既安全又方便.

把一個getter方法變成屬性,只需要加上@property。?此時,@property本身又創建了另一個裝飾器@age.setter,負責把一個setter方法變成屬性賦值,于是,我們就擁有一個可控的屬性操作:

?

class Person(object):def __init__(self, name, age):self._name = nameself._age = age# 訪問器 - getter方法 @propertydef name(self):return self._name# 訪問器 - getter方法 @propertydef age(self):return self._age# 修改器 - setter方法 @age.setterdef age(self, age):self._age = agedef play(self):if self._age <= 16:print('%s正在玩飛行棋.' % self._name)else:print('%s正在玩斗地主.' % self._name)def main():person = Person('王大錘', 12)person.play()person.age = 22

__slots__

class Cat(object):passdef test():cat = Cat()cat.name = "小黑"print(cat.name)# python 是動態語言,所以類Cat 沒有任何屬性, 當賦值后也會新創建一個屬性 test()

為了限制類只能使用自己想要得幾個屬性,可以使用__slots__

class Cat(object):__slots__ = ('name', 'age')

類Cat 只能使用屬性,name, age

靜態函數

使用 @staticmethod 標記方法,使用時不需要實例化。 class Triangle(object):def __init__(self, a, b, c):self._a = aself._b = bself._c = c# 靜態方法 @staticmethoddef is_valid(a, b, c):return a + b > c and b + c > a and c + a > bif __name__ == '__main__':Triangle.is_valid((3,4,5))

?

類函數

使用 @classmethod標記方法 class Clock(object):"""數字時鐘"""def __init__(self, hour=0, minute=0, second=0):self._hour = hourself._minute = minuteself._second = second@classmethoddef now(cls): # cls 表示當前類ctime = localtime(time())return cls(ctime.tm_hour, ctime.tm_min, ctime.tm_sec) # 相當于調用類的構造函數

?



?

轉載于:https://www.cnblogs.com/greatX/p/10930598.html

總結

以上是生活随笔為你收集整理的Day 8 面向对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。