zoukankan      html  css  js  c++  java
  • python学习笔记之---类的属性和方法的访问总结

    类的概念:一组相关数据,和操作这组数据的方法存到一起。

    • 属性(类变量、实例变量)
    • 方法(实例方法、类方法、静态方法)

    那么这些属性和方法是怎么去访问的呢?下面进行总结,方便对比和记忆:

     1 class Person:
     2     count = 0 #类变量
     3     nation = "中国"
     4 
     5     def __init__(self,name,gender):
     6         self.name = name
     7         self.gender = gender
     8         Person.count +=1
     9 
    10     def get_name(self):#实例方法,必须要实例化
    11         return self.name
    12     #类方法:可以使用类变量,不能使用实例变量
    13     #通过类名来使用,类名.get_instance_count()
    14     #也可以通过实例调用,实例对象.get_instance_count()
    15     @classmethod
    16     def get_instance_count(cls):
    17         return Person.count
    18 
    19     @classmethod
    20     def create_a_instance(cls):
    21         return Person("","")
    22 
    23     @staticmethod   #静态方法:不需要self和cls
    24     def get_nation():
    25         return Person.nation
    26 
    27 
    28 wulaoshi = Person("吴老师","Male") #实例化
    29 
    30 
    31 #访问类变量的两种方式:
    32 '''
    33 ①类名.类变量
    34 ②实例名.类变量
    35 '''
    36 print("类变量的调用方法:")
    37 print(Person.count)
    38 print(wulaoshi.count)
    39 
    40 #访问实例变量的方法:
    41 '''
    42 ①实例名.实例变量
    43 ②实例化.实例变量
    44 '''
    45 print("实例变量的调用方法:")
    46 print(wulaoshi.name)
    47 print(Person("吴老师","Male").name)
    48 
    49 #访问实例方法的三种方式:
    50 '''
    51 ①实例名.实例方法()
    52 ②实例化.实例方法()
    53 ③类名.实例方法(实例名)
    54 '''
    55 print("实例方法的调用方法:")
    56 print(Person("吴老师","Male").get_name())
    57 print(wulaoshi.get_name())
    58 print(Person.get_name(wulaoshi))
    59 #注意:实例方法是不能用类名来直接调用的
    60 
    61 #访问类方法的两种方式:
    62 '''
    63 ①类名.类方法()
    64 ②实例对象.类方法()
    65 ③实例.类方法()
    66 '''
    67 print("类方法的调用方法:")
    68 print(Person.get_instance_count())
    69 print(Person("吴老师","Male").get_instance_count())
    70 print(wulaoshi.get_instance_count())
    71 
    72 #访问静态方法的两种方式:
    73 '''
    74 ①类名.静态方法()
    75 ②实例对象.静态方法()
    76 ③实例。静态方法()
    77 '''
    78 print("静态方法的调用方法:")
    79 print(Person.get_nation())
    80 print(Person("吴老师","Male").get_nation())
    81 print(wulaoshi.get_nation())
    82 
    83 
    84 print(Person.get_name()) #类名直接调用实例方法,会报错

    E:>py -3 a.py
    类变量的调用方法:
    1
    1
    实例变量的调用方法:
    吴老师
    吴老师
    实例方法的调用方法:
    吴老师
    吴老师
    吴老师
    类方法的调用方法:
    3
    4
    4
    静态方法的调用方法:
    中国
    中国
    中国
    Traceback (most recent call last):
    File "a.py", line 84, in <module>
    print(Person.get_name())
    TypeError: get_name() missing 1 required positional argument: 'self'

  • 相关阅读:
    cf D. Vessels
    cf C. Hamburgers
    zoj 3758 Singles' Day
    zoj 3777 Problem Arrangement
    zoj 3778 Talented Chef
    hdu 5087 Revenge of LIS II
    zoj 3785 What day is that day?
    zoj 3787 Access System
    判断给定图是否存在合法拓扑排序
    树-堆结构练习——合并果子之哈夫曼树
  • 原文地址:https://www.cnblogs.com/wenm1128/p/11718701.html
Copyright © 2011-2022 走看看