如何在Python中的类中添加属性

AlA*_*AIL 8 python oop attributes

我有:

class A:
        a=1
        b=2
Run Code Online (Sandbox Code Playgroud)

我想做成

setattr(A,'c')
Run Code Online (Sandbox Code Playgroud)

那么我创建它的所有对象都有class A属性c。我不想使用继承

Ahm*_*med 5

有两种方法可以为您的类设置属性;

首先,通过使用setattr(class,variable,value)

代码语法

setattr(A,'c', 'c')
print(dir(A))
Run Code Online (Sandbox Code Playgroud)

输出

您可以在属性中看到A类的结构

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', 
'__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', 
'__init__', '__init_subclass__', '__le__', '__lt__', '__module__', 
'__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', 
'__setattr__', '__sizeof__', '__str__', '__subclasshook__', 
'__weakref__', 'a', 'b', 'c']

[Program finished]
Run Code Online (Sandbox Code Playgroud)

其次,您可以简单地通过分配变量来完成

代码语法

A.d = 'd'
print(dir(A))
Run Code Online (Sandbox Code Playgroud)

输出

您可以在属性中看到A类的结构

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', 
'__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', 
'__init__', '__init_subclass__', '__le__', '__lt__', '__module__', 
'__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', 
'__setattr__', '__sizeof__', '__str__', '__subclasshook__', 
'__weakref__', 'a', 'b', 'c', 'd']

[Program finished]
Run Code Online (Sandbox Code Playgroud)