Python中的类与变量

定义类:

class Student():  # 居然有括号
	name = ‘’  # 定义变量
        age = 0

    def print_file(self):  # 定义函数,”self”是必须的
        print(‘name:’ + self.name)  # 引用变量也要加self

# print_file()

使用类的方法(实例化):

student = Student()
student.print_file()  # 调用类下面的方法

类只负责描述,不负责执行。这种思想也间接地解释了为什么类里不能使用函数(像第一个示例最后一行那样)。

类和对象(一个形象的比喻:类是模板,对象是印刷机):

class Student():
	name = ‘’  # 类变量
    age = 0  # 抽象的一类事物“Student”带有个体的属性name和age,所以在这里,类变量中定义age和name是不合适的
    sum = 0  # 这样的属性定义给一类事物“Student”比较合适

    # 使用构造函数生产不同的对象,这是构造函数的意义
    def __init__(self, name, age):  # 增加额外参数后,那么这几个参数在实例化时必须传入
        # name = name 这样子print(student1.name)会打印’’,为什么?见后文。
        self.name = name  # 这样做是为了改变类下的name和age的初始值(最初的值’’和0),也就是定义实例变量
        self.age = age  # 将传入的参数保存为不同对象的特征值,也就是实例变量
        self.__class__.sum += 1  # 调用类变量

print(age) # (1)
print(name)
print(‘student’)

def do_homework(self):
    print(‘homework’)

# 尝试生产不同的对象
student1 = Student()
student2 = Student()
student3 = Student()
这几个对象一样吗?可以这样说。但在计算机里是不一样的,可以通过id()测试。

# 测试构造函数
student = Student()
student.__init__()  # 可以这样调用构造函数,但通常不会这样做
# 上面两行将会打印两个’student’,因为__init__在实例化时自动调用
student.__init__()返回什么? 返回None。可以强制return其他吗?不行,会报错。

# 测试添加参数的构造函数
student1 = Student(‘石敢当’, 18)
print(student1)

# 测试实例变量和类变量
student1 = Student(‘石敢当’, 18)
student2 = Student(‘喜小乐’, 21)
print(student1.name)
print(student2.name)
print(Student.name)

# 理解为什么__init__构造函数里name = name时打印’’
print(student1.name)
print(student1.__dict__)  # 我们用__dict__函数来一探究竟:字典保存着当前对象下面所有变量,这里打印的是空字典
# 那既然是空字符串那么为什么不直接打印None而是空字符串?因为这是Python内部变量查找机制,它取类里找到了同名变量’name’

# 实例方法参数self指代的就是调用该方法的实例,类方法同理

两个思考题;

上述代码中的(1)里将Print什么内容?

- 打印内容和self.name是一样的。

- 但name是读取的我们的形参’name’,也就是我们传入的参数的值。当你把形参改变,可以看到它会报错。

实例方法如何访问和使用类变量?

- 实例变量内部可以Student.name,通过类来调用。或者self.__class__.name

# 类方法
@classmethod
def plus_sum(cls):  # 操作类相关的变量。这里举例操作sum属性。
    cls.num += 1
    print(cls.sum)

Student.plus_sum()

# 静态方法可以通过实例和类都可以调用
# 类方法和静态方法里可以调用实例变量self.name吗?不可以,self is not defined.

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值