python 私有属性的用途_python 基础 17 面向对象高级, 私有属性,私有方法,继承...

面向对象高级

私有属性,不能被子类继承的属性,在属性的前面加__就变为了私有属性

私有方法,不能被子类继承的方法,在方法的前面加__就变为了私有方法

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('数字过大')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值