Python 类中的方法和属性


类中的函数叫方法

类中的变量叫属性

 

1.类增加/修改属性
  从外部添加/修改属性
1 class A():
2     pass
3 A.num = 100
4 print(A.num)
5 #>>100

  从内部添加/修改属性

1 class A():
2     @classmethod
3     def add_num(cls):
4         cls.num = input('请输入')
5         print(cls.num)
6 
7 A.add_num()

 2.方法不但能调用类属性,还能直接调用类中的其他方法。

  下面例子的16行就是调用了类中的其他方法

 1 class 成绩单():
 2     @classmethod
 3     def 录入成绩单(cls):
 4         cls.学生姓名 = input('请输入学生姓名:')
 5         cls.成绩 = int(input('请输入考试成绩:'))
 6 
 7     @classmethod
 8     def 计算是否及格(cls):
 9         if cls.成绩 >= 60:
10             return '及格'
11         else:
12             return '不及格'
13 
14     @classmethod
15     def 考试结果(cls):
16         print(cls.计算是否及格())
17 
18 
19 成绩单.录入成绩单()
20 成绩单.考试结果()

 

 3.类的实例化

  通过类的实例化,可以创建多个实例对象。通过下面一个例子解释一下类的实例化

1 class my_class():
2     num = 100
3     def print_num(self):
4         print('num is %d'%(self.num))
5 
6 class_1 =  my_class()# 实例化
7 class_2 =  my_class()# 实例化

4.实例属性/类属性的修改/新增

   这个例子中可能会对第15行有疑问,类属性已经修改成了50,然而输出的不是50。可以详见这位博友的讲解https://www.cnblogs.com/fengf233/p/10991028.html

 1 class my_class():
 2     num = 100
 3     def print_num(self):
 4         print('num is %d'%(self.num))
 5 
 6 class_1 =  my_class()# 实例化
 7 class_2 =  my_class()# 实例化
 8 class_1.print_num() 
 9 #>>num is 100
10 class_2.print_num()
11 #>>num is 100
12 class_1.num = 10 #修改实例属性
13 my_class.num = 50 #修改类属性
14 
15 class_1.print_num()
16 #>>num is 10
17 class_2.print_num()
18 #>>num is 50
19 
20 class_1.num2 = 5 #新增类属性
21 print(class_1.num2)
22 #>>5

5.类方法的修改

  以下代码是类方法的修改。要注意一下,第8行重写类方法时,不能在函数的后面加括号,这里是做函数的替换,不需要加括号。如果加上括号,就变成了函数的调用,明显是不对滴。

  实例方法是不允许修改,修改会报错。

class my_class():
    def print_something(self):
        print('old print')

def new_print(self):
    print('new print')

my_class.print_something = new_print #重写类方法
class_1 =  my_class()# 实例化
class_1.print_something()
#>>new print

7.做一个总结
  A.修改类方法和属性,会影响实例方法和属性

  B.一个实例属性的修改,不会影响另一个实例属性

  C.类方法可以修改,但实例方法不允许修改  

 

 

引用:https://www.cnblogs.com/fengf233/


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM