Python——一些类与对象容易让人迷惑误解的相关知识
如果没有特别提供代码,则默认的是以下代码
class Chinese:
#"这是一个中国人的类"
country = '中国'
def __init__(self,name,age):
self.name = name
self.age = age
def history(self):
print("中国拥有上下五千年的历史")
def people(self):
print("%s 是一个中国人"%self.name)
person1 = Chinese('alex',18)
person2 = Chinese('Bob',28)
一、实例对象与类的对象
1、改了实例数据,类的数据没有改
修改实例的数据属性,不影响类的数据属性
person1.country = '法国'
print(Chinese.country)
print(person1.country)
结果:
2、改了类的数据
class Chinese:
l = ['a','b']
def __init__(self,name,age):
self.name = name
p1 = Chinese('alex')
此时,输入以下代码:
p1.l = [1,2,3]
实例的数据改了,但是类里面的数据没有改。
但是,如果输入以下代码:
p1.l.append('c')
实例的数据没有改,但是类里面的数据改了。上面的 = 是赋值操作,直接给 p1 新增属性;下面的 append 是调用类里面的 l ,操作的是类里面的 l 。所以最终类的数据增加了 c 。
2、不要在初始化函数(__init __)里写逻辑
例如:
def __init__(self):
name = input('请输入用户名:')
self.name = name
很初级的错误。特定的函数写特定的功能,输入输出可另外做成一个单独的函数
3、类的里面与外面
country = '美国'
class Chinese:
country = '中国'
def __init__(self,name,age):
self.name = name
self.age = age
print(country)
p1 = Chinese('alex')
此时,country输出的是 ‘美国’ 。通过 点 调用实例或类属性的时候,才会遵循从字典里面找属性,才会调用class里面的 ‘中国’