我正在实现从Java到Python的移植.现在,我想通过使用另一个对象作为嵌套属性来定义对象.
需要明确的是,考虑到Java代码如下:
public class Foo {
private String fooName;
public Foo(String fooName) {
setFooName(fooName);
}
public void setFooName(String fooName) {
this.fooName = fooName;
}
public String getFooName() {
return this.fooName;
}
}
public class Bar {
private String barName;
private Foo foo;
public Bar(String barName, Foo foo) {
setBoName(fooName);
setFoo(foo);
}
public void setBarName(String barName) {
this.barName = barName;
}
public String getBarName() {
return this.barName;
}
public void setFoo(Foo foo) {
this.foo = foo;
}
public Foo getFoo() {
return this.foo;
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能在Python中做同样的事情?
你的课程如下,注意没有publicvs的概念private所以你不需要setter和getter
class Foo:
def __init__(self, fooName):
self.fooName = fooName
class Bar:
def __init__(self, barName, foo):
self.barName = barName
self.foo = foo
Run Code Online (Sandbox Code Playgroud)
举个例子
>>> f = Foo('bob')
>>> b = Bar('steve', f)
>>> f.fooName
'bob'
>>> b.barName
'steve'
>>> b.foo
<__main__.Foo object at 0x02F93070>
>>> b.foo.fooName
'bob'
Run Code Online (Sandbox Code Playgroud)
我想再次强调,使用setter和getter的一般用法不被认为是Pythonic.要么不写/使用它们,要么在需要时使用@property装饰器