生活随笔
收集整理的這篇文章主要介紹了
面向对象作业
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
-
編寫程序, 編寫一個學生類, 要求有一個計數器的屬性, 統計總共實例化了多少個學生
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年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的面向对象作业的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。