-1
私は3クラス(City
,Neighborhood
、およびBlock
)を持っています。ここで派生クラスからクラスを派生させる
はCity
クラスの定義です:Neighborhood
の
class City:
def __init__(self, id_city, name_city):
self.__id = id_city
self.__name = name_city
定義:Block
の
class Neighborhood(City):
def __init__(self, id_neighborhood, name_neighborhood, number_block, *city_args, **kwargs):
City.__init__(self, *city_args, **kwargs)
self.__id = id_neighborhood
self.__name = name_neighborhood
self.__number = number_block
が定義:
class Block(Neighborhood):
def __init__(self, id_block, number_block, number_flats, *neighborhood_args, **kwargs):
Neighborhood.__init__(*neighborhood_args, **kwargs)
self.__id = id_block
self.__number_b = number_block
self.__number_f = number_flats
その後、私は実体を宣言します。
city = City(5, "New York")
neighborhood = Neighborhood(1, "Brooklyn", 500, 5, "New York")
block = Block(11, 2, 20, 1, "Brooklyn", 500, 5, "New York")
そして、このエラーが出ます:
AttributeError: 'int' object has no attribute '_City__id'
なぜこれを継承していますか?それは構成上の問題のようです。また、 '__two_leading_underscore'属性には何がありますか?名前マングリングを使用することを意味しますか? – jonrsharpe
変数名に二重先頭のアンダースコアを使用しないでください。これまで – snakecharmerb
@snakecharmerb:フレームワークを設計するときにそれらを使用し、フレームワークを使用する開発者が内部実装と衝突する属性名を作成する可能性を最小限にする必要があります。それが機能のために設計されたものです。 –