python第九期学习笔记(十二)(面向对象)

https://www.cnblogs.com/jin-xin/articles/10311392.html

 

对于每一个类的成员而言都有两种形式:

  • 公有成员,在任何地方都能访问
  • 私有成员,只有在类的内部才能方法

私有成员和公有成员的访问限制不同:

静态字段(静态属性)

  • 公有静态字段:类可以访问;类内部可以访问;派生类中可以访问,可以通过:类名.字段名访问
  • 私有静态字段:仅类内部可以访问;(只能在类的方法中访问,私有静态字段,通常以__来定义,私有方法也是以__来开头

 

普通字段(对象属性)

 

  • 公有普通字段:对象可以访问;类内部可以访问;派生类中可以访问
  • 私有普通字段:仅类内部可以访问;

 

 案例:

class C:
def __init__(self):
#私有字段以__开头
self.__foo="私有字段"
def func(self):
print(self.__foo)
class D(C):
def show(self):
print(self.__foo)
obj=C()
# print(obj.__foo)
#在类的方法中定义
obj.func()
d=D()
#在类的子类中方问私有字段,不可以
d.show()


方法:

  • 公有方法:对象可以访问;类内部可以访问;派生类中可以访问
  • 私有方法:仅类内部可以访问;
class C:
def __init__(self):
pass
def __add(self):
print('in C')
class D(C):
def __show(self):
print("in D")
def func(self):
self.__show()
obj=D()
#不能在类外访问
# obj.__show()
obj.func()
# obj.__add()

总结:

对于这些私有成员来说,他们只能在类的内部使用,不能再类的外部以及派生类中使用.

算体重:

class People:
def __init__(self,name,weight,height):
self.name=name
self.weight=weight
self.height=height
@property
def bmi(self):
return self.weight/(self.height**2)
p1=People('egon',47,1.55)
print(p1.bmi)
if p1.bmi<18.5:
print("过轻")
elif p1.bmi>=18.5 and p1.bmi<23.9:
print("正常")
elif p1.bmi>=24 and p1.bmi<27:
print("过重")
elif p1.bmi>=28 and p1.bmi<32:
print("肥胖")
else:
print("非常肥胖")


原文地址:https://www.cnblogs.com/gaoyuxia/p/11736653.html