Python 5个面向对象编程示例

打印对象的所有属性

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版权协议,转载请附上原文出处链接和本声明。