Python——实例与类之间需要注意的地方

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里面的 ‘中国’

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值