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

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

'''
# 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值