例题:
class People:
def __init__(self,x,y):
self.x=x
self.y=y
def bmi(self):
return self.需要的公式.self.y
obj=peile(xx)
print(obj1.bmi()) #他的方法bmi
1.先实例化 obj=peile(xx)
2..属性
类隐藏:用_ _ 对内不对外
再内部用_ _可以访问,例如:_Foo_ _x
可以控制某个属性操作 不让外界直接用
例如:
class x:
def __init__(self,name):
self.name=name
def get_name(self): #通过该接口可以间接的访问到名字属性
print(self.__name)
obj=x('egon')
obj.get_name() #在打印时 若用户不加()调用bmi则只会显示装饰器 不会显示具体数值所以有以下两个案例可以解决
装饰器property(用类去实现)
案例一:
@property
class people:
def __init__(self,name,weight,height):
self.name=name
self.weight=weight
self.height=height
@prperty
def bmi(self):
return.weight/(self.height**2)
obj1=people('egon',78,1.83)
print(obj1,bmi)
案例二:如果想控制某个属性操作①先隐藏:_ _x②开放接口
class people:
def _ _init_ _(self,name):
self._ _name=name
def get_name(self):
return self._ _name
def set_name(self):
if type(val) is not str:
print('必须传入str')
return
self.__name=val
def del_name(self):
print('不让删除')
name=prperty(get.name,set_name,def_name)
obj=people('egon')
建议用这个:
class people:
def _ _init_ _(self,name):
self._ _name=name
@property
def name(self): #定义为想让外部使用者的名字
return self._ _name
@name.setter
def name(self,val): #-------》obj1.name='EGON'
if type(val) is not str:
print('必须传入str')
return
self.__name=val
@name.deleter
def name(self): #def obj1.name
print('不让删除')
obj1=people('egon')
print(obj1.name)
def add():cq
标签:,obj1,name,self,__,print,def From: https://www.cnblogs.com/97zs/p/17652819.html