class Person: def __init__(self, name, age, weight): self.name = name ##### #1 定义私有实例变量 年龄age ##### #2 定义私有实例变量 体重weight ##### #3 定义私有实例方法 secret return "我的年龄{}和体重{}公斤是秘密,怎么能随便告诉你".format( ##### ) #4 引用私有实例变量 年龄,体重 def get_secret(self): print( ##### ) #5 引用私有实例方法 secret person1 = Person("小陈", 18, 62.5) person2 = Person("小美", 20, 50) print(person1.name,end=": ") person1.get_secret() print( ##### ) #6 引用对象person2 的实例变量 姓名,私有实例变量 年龄 , 体重
时间: 2023-12-31 15:06:02 浏览: 123
python基础进阶1.6:面向对象之类,对象及__init__(),self相关用法讲解
下面是修改后的代码,已经完成了题目中要求的私有实例变量和私有实例方法的定义:
```
class Person:
def __init__(self, name, age, weight):
self.name = name
self.__age = age #1 定义私有实例变量 年龄age
self.__weight = weight #2 定义私有实例变量 体重weight
def __secret(self): #3 定义私有实例方法 secret
return "我的年龄{}和体重{}公斤是秘密,怎么能随便告诉你".format(self.__age, self.__weight)
def get_secret(self):
print(self.__secret()) #5 引用私有实例方法 secret
person1 = Person("小陈", 18, 62.5)
person2 = Person("小美", 20, 50)
print(person1.name,end=": ")
person1.get_secret()
print(person2.name, person2._Person__age, person2._Person__weight) #6 引用对象person2 的实例变量 姓名,私有实例变量 年龄 , 体重
```
需要注意的是,私有实例变量的命名应该以双下划线开头(例如`__age`),而私有实例方法的命名同样应该以双下划线开头(例如`__secret()`)。在外部访问私有实例变量时,需要使用`_类名__变量名`的方式(例如`_Person__age`)。
阅读全文