Python类属性和对象属性
来自CloudWiki
类属性
类属性:
在类中我们可以定义一些属性:
class Person: name = 'james' age = 12
通过下面的两钟方法来读取访问:
(1) 使用类的名称,例如Person.name,Person.age;
(2) 使用类的实例对象,例如 p=Person()是对象,那么p.name,p.age;
class Person: name="xxx" age=20 #用类名称读取类属性 print(Person.name,Person.age) #用类名称改变类属性 Person.name="yyy" Person.age=21 print(Person.name,Person.age)
结果:
xxx 20 yyy 21
用对象名称读取类属性:
class Person: name="xxx" age=20 p=Person() #用对象名称读取类属性 print(p.name,p.age)
结果:
xxx 20
修改类的属性
修改类的属性就必须使用类名称访问它,不能使用对象实例访问它
class Person: #定义了一个属性 nation = 'China' province = 'Shandong' #定义了一个方法 def printNation(self): print(self.nation) if __name__ == '__main__': p=Person() print(Person.nation,Person.province) print(p.nation,p.province) p.printNation() p.nation = "Russia" print(Person.nation,Person.province) Person.nation = "Russia" print(Person.nation,Person.province)
实例属性
实例有结合任何属性的功能
对象实例.属性=....
如果该对象实例存在这个属性,这个属性的值就被改变;
如果不存在该属性就会自动为该对象实例创建一个这样的属性。
class Person: #定义了一个属性 nation = 'China' province = 'Shandong' #定义了一个方法 def printNation(self): print(self.nation) if __name__ == '__main__': p=Person() #打印类的属性 print(Person.nation,Person.province) #打印实例的属性 print(p.nation,p.province) #改变实例的属性 p.nation = "Russia" #给实例添加属性 p.gender ='male' print(p.nation,p.province,p.gender) print(Person.nation,Person.province) #改变类的属性 Person.nation = "USA" print(p.nation,p.province) print(Person.nation,Person.province)
结果:
xxx 20 yyy male 20 xxx 20
(1)p.nation="yyy"
这条语句生成p实例的name属性,它不同于Person的name属性
(2)p.gender="male"
这条语句生成p实例的gender属性,这是新加的,Person没有gender属性。