面向对象高级
私有属性,不能被子类继承的属性,在属性的前面加__就变为了私有属性
私有方法,不能被子类继承的方法,在方法的前面加__就变为了私有方法
class Cls1:
__a=10 #私有属性
def init(self):
pass
def __yincang(self):
print('这是一个私有方法')
def aabbcc(self):
# print(self.__a)
self.__yincang()
cls1=Cls1() #实例化
cls1.__yincang() #无法直接调用
print(cls1.__a) #无法直接调用
cls1.aabbcc()
class Cls2(Cls1):
pass
cls2=Cls2()
print(cls2.__a) #父类的__a无法被继承
cls2.__yincang() #父类的__yincang无法被继承
cls2.aabbcc()
所有的类都是object的子类,无论是否声明继承object,实际上都继承了object
class Class1:
'''
昨夜雨疏风骤,浓睡不消残酒.
'''
class Class2(object):
'''
试问卷帘人,却道海棠依旧.
知否,知否,应是绿肥红瘦.
'''
print(Class1.bases) #显示父类的名称
print(Class2.bases)
print(Class1.doc) #显示类的注释
print(Class2.doc) #显示类的注释
print(Class1.name) #显示类的名称
多继承
class Youqian1:
def money(self):
print('一个亿')
class Youqian2:
def money2(self):
print('两个亿')
class Youqian(Youqian1,Youqian2): #同时继承多个类
pass
qian=Youqian()
qian.money() #可以使用Youqian1的方法
qian.money2() #也可以使用Youqian2的方法
class Youqian1:
def money(self):
print('一个亿')
class Youqian2:
def money(self):
print('两个亿')
class Youqian(Youqian1,Youqian2): #同时继承多个类
pass
qian=Youqian()
qian.money() #当多个父类中有同名的方法时,按照继承的顺序进行继承
多态(了解)
class Animal:
def say(self):
pass
class Dog(Animal):
def say(self):
print('汪汪汪')
class Cat(Animal):
def say(self):
print('喵喵喵')
def animal_say(obj): #定义一个函数,根据传入的实例调用各自的say()方法
obj.say()
dog=Dog()
cat=Cat()
animal_say(cat)
class Fanguan:
pass
class Yuxiangrousi(Fanguan):
def caidan(self):
print('鱼香肉丝')
class Gongbaojiding(Fanguan):
def caidan(self):
print('宫保鸡丁')
class Qingjiaotudousi(Fanguan):
def caidan(self):
print('青椒土豆丝')
def fuwuyuan(obj):
obj.caidan()
guke1=Yuxiangrousi()
guke2=Gongbaojiding()
guke3=Qingjiaotudousi()
fuwuyuan(guke3)
写一个三角形的类,可以求周长和面积
class Sanjiaoxing:
def init(self,a,b,c):
self.a = a
self.b = b
self.c = c
def zhouchang(self):
if self.a+self.b<=self.c or self.a+self.c<=self.b or self.b+self.c<=self.a:
return ('无法构成三角形,忽略周长')
else:
return self.a+self.b+self.c
def mianji(self):
if self.a+self.b<=self.c or self.a+self.c<=self.b or self.b+self.c<=self.a:
return ('无法构成三角形,忽略面积')
else:
p=(self.a+self.b+self.c)/2
return (p(p-self.a)(p-self.b)(p-self.c))*0.5
sjx=Sanjiaoxing(3,4,5)
print(sjx.zhouchang())
print(sjx.mianji())
猜数字游戏,最多猜7次
from random import randint #加载随机数的随机整数模块
a=randint(0,100) #生成一个随机数
for i in range(7): #控制循环的次数为7次
b=int(input('请输入一个数字:'))
if a==b:
print('回答正确')
break
elif b
print('数字过小')
elif b>a:
print('数字过大')