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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

面向对象作业

發布時間:2024/9/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面向对象作业 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 編寫程序, 編寫一個學生類, 要求有一個計數器的屬性, 統計總共實例化了多少個學生

class Student:i = 0def __init__(self, name):self.name = name Student.i += 1 #實例話的時候都會執行構造方法 @classmethoddef count(cls):return cls.ia = Student("a") b = Student("b") print(Student.count()) View Code
  • 編寫程序, A 繼承了 B, 倆個類都實現了 handle 方法, 在 A 中的 handle 方法中調用 B 的 handle 方法

class B:def handle(self):print("B handle")class A(B):def handle(self):super().handle()# B.handle(self)print("a handle")a = A() a.handle() View Code
  • 編寫程序, 在元類中控制自定義的類無需init方法.

class MyMeta(type):def __call__(self, *args, **kwargs):if args:raise TypeError("must be keyword argument")obj = object.__new__(self) #創建對象for k, v in kwargs.items():obj.__dict__[k]=vreturn objclass Chinese(metaclass=MyMeta):country = 'china'p1 = Chinese(name='alex', age=18) print(p1, p1.country) #<__main__.Chinese object at 0x000001C63BC2CB70> china print(p1.__dict__) #{'name': 'alex', 'age': 18} View Code
  • 編寫程序, 在元類中控制把自定義類的數據屬性都變成大寫

class Mymeta(type):def __new__(cls,name, bases, dics):update_dic = {}for k,v in dics.items():if not callable(v) and not k.startswith("__"):update_dic[k.upper()] = velse:update_dic[k] = vreturn type.__new__(cls,name, bases, update_dic)class Chinese(metaclass=Mymeta):country = "china"sex = 'male'print(Chinese.__dict__) View Code
  • 實現單例模式

class Mysql:__instance = Nonedef __init__(self, host="127.0.0.1", post=9999):self.host = hostself.post = post@classmethoddef single(cls,):if not cls.__instance:cls.__instance = cls()return cls.__instancesql1 = Mysql() sql2 = Mysql() print(sql1 is sql2) sql3 = Mysql.single() sql4 = Mysql.single() print(sql3 is sql4) 利用classmethod實現 class Mymeta(type):__instance = None# def __init__(self, *args, **kwargs):# super().__init__(*args, **kwargs)def __call__(self, *args, **kwargs):if not self.__instance:super().__call__(*args, **kwargs)# print(‘__instance‘,self.__instance)return self.__instanceclass Mysql(metaclass=Mymeta):def __init__(self, host=‘127.0.0.1‘, post=9999):self.host = hostself.post = posta = Mysql() b = Mysql() print(a is b ) 自定義元類 class Singleton:__instance = Nonedef __new__(self, *args, **kwargs):if not self.__instance:super().__new__(self, *args, **kwargs) p1 = Singleton() p2 = Singleton() print(p1 is p2) 姿勢3 與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

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

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