一、类的属性和方法
1.类的属性
属性:类似于人的身高、职业、性别等称为属性。
注意:类的属性默认情况下是直接被开放出去,可以直接调用读取和赋值的。
2.类的方法
补充:在类的内部不同方法之间是可以调用类的同一个属性的。
举例:
def sayHello(self):
print("hello,"+self.name)
二、类中属性方法的私有化
1.私有化的概念理解
私有化往往其实就是指只能被某些特定的对象调用。
2.类的方法的私有化
其实私有化只需要在方法名前加两个下划线即可,举例:
def __sayHello(self):
print("hello,"+self.name)
而实际上,这种类型的私有化并不是绝对不能被调用的,我们可以采用类的名称前加一个下划线以及定义的整个私有方法名的拼接组合成一个新的方法名称就可以调用。举例:
p._Person__sayHello()
提问:为什么私有化的类可以被调用呢?
在python中,私有化的类方法在被编译的时候,实际上就是在这个方法名称前面拼接了下划线和类的名称。
提问:私有化的调用方式如何知道的呢?
使用inspect库的getmembers方法可以访问到类中的成员与方法。
import inspect
methods=inspect.getmembers(p,predicate=inspect.ismethod)
print(methods)
注意点:inspect.getmembers(类的对象,刷选依据)
3.分析结论:
无论是类的方法还是类的属性,只要在方法或者属性名称前面加上两个下划线,那么就会被python编译器自动私有化,会在这个名称前面加上一个_类的名称。
三、总结强调
1.掌握类的属性的定义和调用
2.掌握类的方法的定义和调用
3.掌握类的属性和方法的私有化
4.掌握使用inspect库来查看类的所有的属性和方法的成员。
本节源代码:
class Person: #定义类的方法 def setName(self,name): self.__name=name def getName(self): return self.__name def __sayHello(self): print("hello,"+self.__name) p=Person() p.setName("老刘") print(p.getName()) p.setName("刘金玉") print(p.getName()) #直接设置类的属性 p.__name="老张" print(p.getName()) #直接读取类的属性 print(p.__name) p._Person__sayHello() import inspect methods=inspect.getmembers(p) print(methods)