打印对象的所有属性
class Person(object):
def __init__(self):
self.eyes=2
self.name="zhangsan"
self.age = 30
p = Person()
print(vars(p))
结果
{'eyes': 2, 'name': 'zhangsan', 'age': 30}
在函数中将对象的实例作为参数传递
class Vehicle:
def __init__(self):
self.trucks = []
def add_truck(self,truck):
self.trucks.append(truck)
class Truck:
def __init__(self,color):
self.color = color
def __repr__(self):
return "{}".format(self.color)
def main():
v = Vehicle()
for t in 'Red Pink Black'.split():
t = Truck(t)
v.add_truck(t)
print(v.trucks)
if __name__ == '__main__':
main()
结果
[Red, Pink, Black]
python 在运行时创建类属性
简单示例
class Person:
pass
p = Person()
setattr(p,'name','buji')
setattr(p,'age','30')
print(p.age)
print(p.name)
拓展:
setattr() 语法:
setattr(object, name, value)
参数
object – 对象。
name – 字符串,对象属性。
value – 属性值。
class Person:
name = 'zhangsan '
p = Person()
print('获取已存在的属性值:',getattr(p,'name'))
#给属性赋值
setattr(p,'name','buji')
print(p.name)
那么使用setattr()函数的好处在哪里呢?
setattr()函数在属性名称不是静态的动态编程中很有用。 在这种情况下,我们不能使用点运算符。 例如,以用户输入来设置对象属性及其值。
示例:
class Person:
pass
p = Person()
name = input('input_name:\n')
value = input('input_value:\n')
setattr(p,name,value)
print('name',name,'value',getattr(p,name))
结果
input_name:
name
input_value:
jibu
name= name value= jibu
python 中创建和使用自定义self参数
class Person(object):
def __init__(person,age,name):
person.age=age
person.name=name
def person_move(person_1):
print(str(person_1.age)+' : '+person_1.name)
p = Person(30,'jibu')
p.person_move()
结果
30 : jibu
python 中super作用
class Person:
def __init__(self,A):
print(A,'11')
class Animals(Person):
def __init__(self,name):
self.name=name
print('ji')
super().__init__('Devop')
a = Animals('hello')
print(vars(a))
结果
ji
Devop 11
{'name': 'hello'}
版权声明:本文为weixin_47906106原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。