class Person: def work(self): print("好好工作") def playgames(s): print("{0}在玩游戏".format(s)) def work2(a): print("好好工作,好好赚钱") Person.play = playgames p = Person() p.work() p.play() Person.work = work2 p.work() #测试私有属性,私有方法 class Student: def __init__(self,name,age): self.name = name self.__age = age def __work(self): print("好好工作赚大钱") print("年龄{0}".format(self.__age)) a = Student("张三",18) print(a.name) #print(a.__age) print(a._Student__age) a._Student__work() #测试property class Employee: def __init__(self,name,salary): self.__name = name self.__salary = salary @property def salary(self): return self.__salary @salary.setter def salary(self,salary): if 1000<salary<50000: self.__salary = salary else: print("录入错误!薪水在1000--50000之间!") emp1 = Employee("张三",18) emp1.salary = -2000 print(emp1.salary)
#继承的使用方法 class Person: def __init__(self,name,age): self.name = name self.age = age def say_age(self): print("年龄,年龄,我也不知道") def say_intrpduce(self): print("我的名字是{0}".format(self.name)) class Student(Person): def __init__(self,name,age,score): Person.__init__(self,name,age) #必须显示调用父类初始化方法,不然解释器不会调用,注意缩进 self.score = score #注意缩进 # def say_intrpduce(self): # print("报告老师,我的名字叫{0}".format(self.name)) s = Student("张三",18,60) s.say_age() print(s.name) print(dir(s)) s.say_intrpduce() print('##########################################') class Peo: def __init__(self,name): self.name = name p = Peo("张三") print(p)
class A: def aa(self): print("aa") class B: def bb(self): print("bb") class C(B,A): def cc(self): print("cc") c = C() c.cc() c.bb() c.aa() #################################### print('##################################') class A: def say(self): print("A:",self) class B(A): def say(self): A.say(self) super().say() print("B:",self) B().say() print("#################################################") class Man: def eat(self): print("饿了,吃饭啦") class Chinese(Man): def eat(self): print("中国人用筷子吃饭") class English(Man): def eat(self): print("英国人用刀叉吃饭") class Indian(Man): def eat(self): print("印度人用右手吃饭") def manEat(m): if isinstance(m,Man): m.eat() else: print("不能次饭") manEat(Chinese())
class Person: def __init__(self,name): self.name = name def __add__(self, other): if isinstance(other,Person): return "{0}----{1}".format(self.name,other.name) else: return "不是同类,不能相加" p1 = Person("张三") p2 = Person("李四") x = p1+p2 print(x)
class A2: def say_a2(self): print("a2,a2,a2") class B2: def __init__(self,a): self.a = a a2 = A2() b2 = B2(a2) b2.a.say_a2()
#测试工厂模式 class CarFactory: def creat_car(self,brand): if brand == "奔驰": return Benz() elif brand == "宝马": return BMW() elif brand == "比亚迪": return BYD() else: return "未知品牌,无法创建" class Benz: pass class BMW: pass class BYD: pass factory= CarFactory() c1 = factory.creat_car("奔驰") c2 = factory.creat_car("宝马") print(c1) print(c2)
#测试工厂模式 class CarFactory: def creat_car(self,brand): if brand == "奔驰": return Benz() elif brand == "宝马": return BMW() elif brand == "比亚迪": return BYD() else: return "未知品牌,无法创建" class Benz: pass class BMW: pass class BYD: pass factory= CarFactory() c1 = factory.creat_car("奔驰") c2 = factory.creat_car("宝马") print(c1) print(c2) #测试单例模式 print("###########################################################") class MySingleton: __obj = None __init_flag = True def __new__(cls, *args, **kwargs): if cls.__obj == None: cls.__obj = object.__new__(cls) return cls.__obj def __init__(self,name): if MySingleton.__init_flag: print("init..............") #注意缩进 self.name = name MySingleton.__init_flag = False a = MySingleton("aa") b = MySingleton("bb") print(a) print(b)