在一个类将另一个类设置为属性,不能获取到那个类中的getter
时间: 2024-05-08 11:16:11 浏览: 119
和setter方法,需要在当前类中重新定义getter和setter方法来操作那个属性。
例如,假设有一个Person类和一个Address类,Person类中有一个address属性:
```python
class Address:
def __init__(self, street, city, state):
self.street = street
self.city = city
self.state = state
class Person:
def __init__(self, name, address):
self.name = name
self.address = address
```
现在我们想要获取Person类中address属性中的street属性,我们可以在Person类中重新定义getter方法:
```python
class Person:
def __init__(self, name, address):
self.name = name
self.address = address
@property
def street(self):
return self.address.street
```
这样我们就可以通过person_instance.street来获取address属性中的street属性了。类似的,如果我们想在Person类中设置address属性的值,我们也需要重新定义setter方法:
```python
class Person:
def __init__(self, name, address):
self.name = name
self.address = address
@property
def street(self):
return self.address.street
@address.setter
def address(self, value):
if not isinstance(value, Address):
raise TypeError('Address must be an instance of Address class')
self._address = value
```
这样当我们使用person_instance.address = new_address来设置address属性的值时,会自动调用address.setter方法来进行类型检查和操作。