上一节课提到,私有属性没有办法从外部访问,只能在类的内部操作;那如果外部需要操作私有属性怎么办?这个时候可以通过定义类或者实例的方法来操作私有属性,本节课先来介绍实例方法。
实例的方法指的就是在类中定义的函数,实例方法的第一个参数永远都是self,self是一个引用,指向调用该方法的实例对象本身,除此以外,其他参数和普通函数是完全一样的。
class Person(object): def __init__(self, name): self.__name = name def get_name(self): return self.__name
在上面的定义,name是实例的私有属性,从外部是无法访问的,而get_name(self) 就是一个实例方法,在实例方法里面是可以操作私有属性的,注意,它的第一个参数是self。
另外,__init__(self, name)其实也可看做是一个特殊的实例方法。
通过定义get_name(self)方法,在外部就可以通过这个方法访问私有属性了。
p = Person('Alice') print(p.get_name()) # ==> Alice
注意,在外部调用实例方法时,是不需要显式传递self参数的。
另外,通过定义实例方法来操作私有属性的这种方法是推荐的,这种数据封装的形式除了能保护内部数据一致性外,还可以简化外部调用的难度。
当然,实例方法并不仅仅是为私有属性服务的,我们可以把和类的实例有关的操作都抽象成实例方法,比如:打印实例的详细信息等等。
class Animal(object): def __init__(self, name, age, localtion): self.name = name self.age = age self.localtion = localtion def get_info(self): return 'name = {}, age = {}, localtion = {}'.format(self.name, self.age, self.localtion) dog = Animal('wangwang', 1, 'GuangDong') print(dog.get_info())
把Animal类的age、name、localtion定义成私有属性,并定义对应的方法修改和获取他们的值。
参考答案:
class Animal(object): def __init__(self, name, age, localtion): self.__name = name self.__age = age self.__localtion = localtion def set_name(self, name): self.__name = name def get_name(self): return self.__name def set_age(self, age): self.__age = age def get_age(self): return self.__age def set_localtion(self, localtion): self.__localtion =localtion def get_localtion(self): return self.__localtion
请验证,完成请求
由于请求次数过多,请先验证,完成再次请求
打开微信扫码自动绑定
绑定后可得到
使用 Ctrl+D 可将课程添加到书签
举报