python类属性、类方法

参考资料:https://blog.youkuaiyun.com/m0_46610658/article/details/141021328

Python类 - 幕布

1.类里的属性(成员变量)
    1.1.类属性:类属性就是这个类所拥有的属性(变量),类属性被该类的所有实例对象所共有。类属性包括公有类属性和私有类属性。公有的类属性,在类外可以通过类名或实例对象来访问。
    类属性不属于任何一个实例对象,而是属于类本身。但所有的实例对象可以共享同一个类属性。当你修改类属性时,在所有的实例对象中都能看到类属性的变化。

    新建一个文件:person.py,输入如下内容

class PERSON: #类名要大写
    age="18" #公有类属性
    __age_add="99" #私有类属性

    新建另一个文件:test.py,输入如下内容

import person

    cla=person.PERSON #类
    obj=person.PERSON() #类的实例对象

    print(cla.age)#通过类名调用类属性
    print(obj.age)#通过实例对象调用类属性


 
    1.2.实例属性:实例属性是定义在构造方法__init__内部的.实例属性是该类的实例对象所拥有的,类对象无法拥有(通过类名无法访问实例属性)。实例属性在类的每一个实例对象中独立存在,每个实例对象都有自己的实例属性,互不影响。

    新建一个文件:person.py

class PERSON: #类名要大写
    age="18" #类属性
    

    def __init__(self,name:str,age): #实例方法
    #self代表实例对象本身
    #实例属性,注意:init英文不要拼错,init两边分别有两条下划线,如果写成一条下划线则无法识别为实例属性
        self.name=name #第一个实例属性
        self.age=age  #第二个实例属性

    新建另一个文件:test.py

import person

    cla=person.PERSON #类
    obj=person.PERSON("bella","20") #类的实例对象

    #print(cla.name) #使用类去调用实例属性会报错
    print(obj.name) #使用实例去调用实例属性

    1.2.1.补充,在定义的类里实例化对象

    新建一个文件:person.py    

class PERSON: #类名要大写
    age="18" #类属性
    

    def __init__(self,name:str,age): #实例属性,注意:init英文不要拼错,init两边分别有两条下划线,如果写成一条下划线则无法识别为实例属性
        self.name=name #第一个实例属性
        self.age=age  #第二个实例属性

    person1=PERSON("bella","21")
    print(person1.name)
    print(person1.age)


2.类里的方法(成员方法)
    2.1.类方法:类方法用@classmethod标志,方法的第一个参数用cls,代表的类本身。可以通过类对象和实例对象去访问

    新建一个文件person.py 

class PERSON: #类名要大写
    age="18" #公有类属性
    __age_add='99' #私有类属性

    @classmethod
    def get_age(cls)->str: #类方法用@classmethod标志,方法的第一个参数用cls,代表的类本身。可以通过类对象和实例对象去访问
        return f"age={cls.age},agg_add={cls.__age_add}"


    新建一个文件test.py
  

 import person

    cla=person.PERSON #类
    obj=person.PERSON() #类的实例对象

    print(cla.get_age()) 
    print(obj.get_age())

    输出结果:
    age=18,agg_add=99
    age=18,agg_add=99


    2.2.实例方法
    init方法是特殊实例方法。实例方法不需要用@来标志,实例方法第一个参数必须为self(代表实例本身)。

    新建文件:person.py  

 class PERSON: 
    age="18" #类属性
    

    def __init__(self,name:str,age): #实例方法(特殊的实例方法,其实是构造方法),注意:init英文不要拼错,init两边分别有两条下划线,如果写成一条下划线则无法识别为实例属性
    #self代表实例对象本身
        self.name=name #第一个实例属性
        self.age=age  #第二个实例属性

    def print_age(self):#另一个实例方法,实例方法不需要用@来标志,实例方法第一个参数必须为self(代表实例本身)。
        print(self.age)

    新建文件:test.py
    

import person

    obj=person.PERSON('bella','21') #类的实例对象

    print(obj.print_age())#实例对象调用实例方法

    执行结果:21

    2.3.静态方法:静态方法用@staticmethod标志,方法不需要传参(cls和self都不需要),静态方法调用类属性时使用用类本身来调用。
        静态方法可以被类对象和实例对象调用,但一般用类对象调用,为了强调静态方法的独立性

    新建文件:peron.py

class PERSON: 
    age="18" 
    __age_add='99' 

    @staticmethod
    def get_age()->str: #静态方法用@staticmethod标志,方法不需要传参(cls和self都不需要),静态方法调用类属性时使用用类本身来调用。
        #静态方法可以被类对象和实例对象调用,但一般用类对象调用,为了强调静态方法的独立性
        return f"age={PERSON.age},agg_add={PERSON.__age_add}"

    新建文件:test.py

import person

    cla=person.PERSON #类
    obj=person.PERSON() #类的实例对象

    print(cla.get_age()) 
    print(obj.get_age())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值