在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ python能不能new對象的同時(shí)給成員變量賦值

python能不能new對象的同時(shí)給成員變量賦值

例如C#這樣

info = new MyClass(){
    name:"小明",
    age:13
}
回答
編輯回答
筱饞貓
  1. python 沒有 new 。
  2. python 只有 call ,括號 () 就是調(diào)用了相關(guān) __call__ 方法。
  3. python 中“實(shí)例化”只是一個(gè)普通的 call (它返回了相關(guān)對象) ,里面附加了 __init__ 的過程而已。
  4. 賦值什么的你自己在 __init__ 中作不就完了。
2017年7月1日 14:39
編輯回答
溫衫

python3中可以這樣

class MyClass(object):
    __slots__ = ('name', 'age') # 你的屬性
    def __init__(self, d):
        for i in self.__slots__:
            setattr(self, i, d[i] if i in d else None)
            
    def to_dict(self):    # 后面的方法為了顯示更方便
        return {i: getattr(self, i) for i in self.__slots__}
        
    def __str__(self):
        return str(self.to_dict())
        
    def __repr__(self):
        return str(self.to_dict())

# 測試
info = MyClass({
    'name':'小明',
    'age':13
})
print(info)    # {'age': 13, 'name': '小明'}

info1 = MyClass({
    'name':'小明'
})

print(info1)    # {'age': None, 'name': '小明'}
         
2018年7月24日 20:36
編輯回答
幼梔
>>> class MyClass(object):
        def __init__(self, name, age, **kwargs):
            self.name = name
            self.age = age
            self.kv = kwargs

        def more(self):
            for k in self.kv:
                print(k, self.kv[k])

            
>>> info = MyClass(name="xiaoming", age=13, score=100, weight=40)
>>> info.name
'xiaoming'
>>> info.age
13
>>> info.more()
('score', 100)
('weight', 40)
2017年8月19日 01:21