python类的私有成员,其他方法,属性

本文详细介绍了Python面向对象编程中的私有成员,包括私有类属性、私有方法和私有对象属性的使用,强调了私有成员的访问限制。同时,文章探讨了类方法的概念,通过示例展示了类方法如何用于统计实例数量。此外,还提到了静态方法的特性,即不依赖于对象和类。最后,文章以一个属性访问器(getter、setter和deleter)的例子结束,展示了如何使用@property装饰器来控制属性的读取、设置和删除行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

'''
类的私有成员:私有类的静态属性,私有类的方法,私有对象的属性

'''
# class A:
#     name = '123'
#     __name = '234'  #私有类的属性
#     def func(self):
#         print(self.name)
#         print(self.__name)
# obj = A()
# obj.func()

    #类的外部不能访问

# class A:
#     name = '123'
#     __name = '234'  #私有类的属性
#     def func(self):
#         print(self.name)
# obj = A()
# print(obj.name)
# print(obj.__name)

 #类的派生类不能访问
# class A:
#     name = '123'
#     __name = '234'  #私有类的属性
#
# class B(A):
#     def func(self):
#         print(self.__name)
#
# obj = B()
# print(obj.__name)


class A:

    def __init__(self,name,pwd):
        self.name = name
        self.__pwd = pwd

    def md5(self):
        self.__pwd = self.__pwd + '123'

obj = A('yz','123')
# print(obj.__pwd)


#私有类的方法
class A:
    name = '123'
    __name = '234'

    def func(self):
        self.__func()
        print('in A func')

    def __func(self):
        print('in A __func')

obj = A
# obj.func()
# obj.__func(2)
print(A.__dict__)#python的所有私有成员都是纸老虎
#私有成员来说:当你遇到重要的数据,功能,只容许本类使用

#类从加载时只要看到类中的私有成员,都会在私有成员前加上_类名




#类方法

# class A:
#
#     def func(self):
#         print('实例方法')
#
#     @classmethod
#     def cls_func(cls):
#         print(f'cls---->{cls}')
#         print('类方法')
# print(A)
# A.cls_func()

# obj = A()
# obj.cls_func()

#类方法一般通过类名去调用的方法,并且自动将类名地址传给cls
#但是如果通过对象调用也可以,但是传的地址还是类名地址
# A.cls_func()

'''
类方法有什么用:
1、得到类名可以实例化
2、可以操作类的属性
创建一个学生类,只要实例化一个类方法,统计一下具体实例化多少个学生?
'''
#类方法的简单应用
# class Student:
#
#     count = 0
#     def __init__(self,name,id):
#         self.name = name
#         self.id =id
#         Student.addnum()
#
#     @classmethod
#     def addnum(cls):
#         cls.count = cls.count + 1
#
#     @classmethod
#     def getnum(cls):
#         return  cls.count
#
# obj1 = Student('yz','20207152')
# obj1 = Student('yz','20207153')
# obj1 = Student('yz','20207154')
# obj1 = Student('yz','20207155')
# obj1 = Student('yz','20207156')
# obj1 = Student('yz','20207157')
# obj1 = Student('yz','20207158')
# obj1 = Student('yz','20207159')
# print(Student.getnum())


#静态方法
class A:

    def func(self):
        print('实例方法')

    @staticmethod
    def static_func():
        print('静态方法方法')


#静态方法是不依赖于对象与类的,其实静态方法就是函数。

class Foo:
    @property
    def bmi(self):
        print('get的时候运行我啊')

    @bmi.setter
    def bmi(self,value):
        print(value)
        print('set的时候运行我啊')

    @bmi.deleter
    def bmi(self):
        print('delete的时候运行我啊')

obj = Foo()
# obj.bmi
obj.bmi = 666 #操作命令 这个命令并不是改变bmi的值,而是执行被bmi.setter装饰器的函数
del obj.bmi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值