【python】类创建、实例化和调用类方法、子类、继承、私有属性、静态方法

本文详细介绍了Python中的类属性与实例属性的区别,实例化和调用类方法的过程,类的继承机制,以及访问限制(包括私有属性)和静态方法的概念及其用法。
摘要由CSDN通过智能技术生成
一、类属性:定义在类中函数外的属性;self代表类的实例。

其中 number属于类属性,name、age属于实例属性;实例属性一般在初始函数中定义。

class people:
    number=300  #类属性
    def __init__(self,name,age):#初始化方法 左右两个下划线
        self.name=name
        self.age=age
    def display(self):
        print('number=:',people.number)
    def display_name(self):
        print(self.name)
    def display_age(self):
        print(self.age)

其中self一定要写。

二、实例化和调用类方法
#实例属性只能通过实例名访问
shili=people('yuyuanyuan',80)#类方法的调用
print(shili.age)
print("-----------------------------")
print(shili.number)
print("-----------------------------")
print(shili)
print("-----------------------------")
shili.display()#调用类方法
shili. display_age()
shili.name = 'hello'   #属性可以改变
print(shili.name)

结果:

python中除了可以通过类名称访问类属性,还可以动态地为类和对象添加属性、也可以修改类属性 

people.arm = '有两个梨涡'
print(shili.arm)
#结果:有两个梨涡

类的创建:

class Love:
    "节日类"
    def __init__(self,name,love):
        print(name)
        print(love)
love='love'
name='you'
yyy=Love(love,name)

 结果:

三、类的继承
#子类的定义
class Parent:
    number=100
    def __init__(self):
        print("调用父类构造函数")
    def parentM(self):
        print('调用父类方法')
    def newM(self):
        print('另一个父类新的方法')
class child(Parent):
    number=200
    def __init__(self):
        print('调用子类构造函数')
    def childM(self):
        print('调用子类方法')
    def newM(self):
        print('若函数名字相同,则子类重写此方法')

 (1)子类实例应用

#子类实例应用
c = child()  #生成子类实例
c.childM()   #调用子类方法
c.parentM()  #调用父类方法,此方法子类中没有。
c.newM()    #子类和父类都有这个方法,那就调用子类的方法。

 结果:

四、访问限制 

    在类的内部可以定义属性和方法,而在类的外部则可以直接调用属性或方法来操作数据,从而隐藏了类内部的复杂逻辑。但python并没有对属性和方法的访问权限进行限制。为了保证类内部的某些属性或方法不被外部所访问,可以在属性或方法名前添加双下划线或首尾添加双下划线,从而限制访问权限。
#1.首尾双下划线表示定义特殊方法,一般是系统定义名字,如__init__()
#2.双下划线表示private(私有)类型的成员,只允许定义该方法的类本身进行访问,而不能通过类的实例进行访问,但可以通过“类的实例名._类名__***”方式访问。

class People:  # 创建一个人类
    """人类"""
    __eye = '有两只爱笑的眼睛'
    def __init__(self):  # 构造方法
        print('__init__():', People.__eye)  # 在实例方法中访问私有属性
man = People()  # 创建People类的实例
print('加入类名:', man._People__eye)  # 私有属性,可以通过"实例名._类名__xxx"方式访问
print('直接访问:', man.__eye)  # 私有属性不能通过实例名访问,出错

五、静态方法

 静态方法是定义在类上的方法,它可以通过类或者类的实例来调用。静态方法使用@staticmethod装饰器进行标识,它不需要类或实例作为第一个参数。与类方法不同,静态方法不能访问类或实例的属性和方法

class MyClass:

    @staticmethod
    def my_static_method(arg1, arg2):
        print("Static method called with args:", arg1, arg2)


MyClass.my_static_method(1, 2)
# 输出:Static method called with args: 1 2

obj = MyClass()
obj.my_static_method(3, 4)
# 输出:Static method called with args: 3 4

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值