面向对象初识

面向对象

class Person(): #声明一个类
    contry = 'CN'   #静态属性,类属性
    def __init__(self,*args):  #初始化方法,调用类时触发方法,调用之前,python帮我们创建了一个空对象self
        self.name = args[0]  #给self的属性赋值
        self.age = args[1]
    def walk(self,n):   #方法,必须传self参数,且必须写在第一个,后面还可以有其他参数
        print(self.contry)  #可以调用静态属性
        print('%s走啊走,走了%d步'%(self.name,n))

p = Person('jcc',18)    #定义一个对象p
p.walk(9)   #对象可以直接调用方法
Person.walk(p,7) #类可以调用方法,必须传入一个对象
print(p.name)   #对象可以调用对象属性
print(p.contry) #对象可以调用静态属性
print(Person.contry)    #类可以调用静态属性
# print(Person.name)    #类不可以调用对象属性
print(Person.__dict__)  #查看类的所有属性和方法
print(p.__dict__)   #查看对象中的所有属性
p.name = 'tff'  #对象属性可以修改
Person.contry = 'JP'     #修改静态属性的值
p.contry = 'cn'     #并没有影响静态属性,只是为对象又添加了一个contry属性
View Code

关于可变类型的类属性

class Person():
    ex = []
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex
    def do(self,dosomething):
        print('%s,%s,%s,%s'%(self.name,self.age,self.sex,dosomething))
p1 = Person('小张',18,'')
p2 = Person('小王',20,'')

Person.ex = ['judy']

p1.ex[0] = 'elina'
print(p2.ex)
print(Person.ex)

p1.ex = 'elina'
print(p2.ex)
print(Person.ex)

# 对象和类是单向连接
View Code

....待续

原文地址:https://www.cnblogs.com/jiangchengcheng/p/9593712.html