Python中的嵌套对象

vde*_*ris 0 python java oop

我正在实现从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中做同样的事情?

Cor*_*mer 7

你的课程如下,注意没有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装饰器