Python:如何在类级别属性定义中访问超级属性

时间:2016-09-29 09:08:20

标签: python inheritance

在Python中,在定义类时,可以在新属性定义中使用先前定义的属性,而无需进一步引用。

class Parent(object):
    a_value = 'a'
    another_value = 'b'
    all_values = (a_value, another_value)

是否可以在派生类中执行相同操作但仍可访问其中一些父属性?

我尝试过这样的事情:

class Child(Parent):
    a_child_value = 'c'
    all_values = (a_value, another_value, a_child_value)

但它似乎没有考虑到Parent继承并给我以下错误:

NameError: name 'a_value' is not defined

那么,有没有办法表明a_valueanother_value应该来自父类而不是当前的上下文?

在我的情况下,特别是值不是字符串,而是预编译的正则表达式,所以我希望每次创建新实例时都不必在__init__方法中创建它们。

2 个答案:

答案 0 :(得分:1)

您需要class Child(Parent): a_child_value = 'c' all_values = (Parent.a_value, Parent.another_value, a_child_value) 才能获得您追求的价值。 a_child是一个静态属性,因此附加到类本身而不是局部变量。

echo 'foo bar' | zip -@ /path/to/zipfile.zip

如果它是从某个东西派生的,你必须输入它的派生内容。

答案 1 :(得分:1)

像这样。

$sqlq="SELECT DISTINCT daerah FROM kampung WHERE negeri='$negeri'";
    $result_set=mysqli_query($conn, $sqlq);
    while($row=mysqli_fetch_array($result_set, MYSQLI_ASSOC))
    {
        echo "<option value=".$row['daerah'].">".$row['daerah']."</option>";
    }