设为首页 加入收藏

TOP

python学习笔记:第16天 对象中的成员(二)
2018-11-08 18:08:52 】 浏览:163
Tags:python 学习 笔记 对象 成员
法 # 这是一个静态方法

既然静态方法和类方法都是跟对象无关的,都可以通过类来访问,那么他们有什么区别呢:

  • 类方法在传参的时候,需要传入一个类,而静态方法在使用时不需要传入任何参数,可以直接通过类调用
  • 类方法在传参的时候接收了一个参数,cls可以通过cls访问类中的变量,而静态方法则不行,静态方法需要使用类名来访问(即使在类的内部也是如此)

四、类的成员-属性

属性其实就是通过?法改造过来的?种变量的写法, 在?法上添加?个@property就可以了

class Person:
    def __init__(self):
        pass
    @property
    def age(self):
        return 1

p = Person()
age = p.age
print(age)

应?场景: 我们?般保存数据的时候, 不会保存?个?的年龄. 因为随着时间的推移. 每个?的年龄都时刻在改变着. 那如何保存更加完美呢? 很简单. 保存出?年??. 然后?程序来计算,你当前的年龄. 实时的. 那这个时候就需要进?相应的计算了. ?计算属于?个功能. 当然要写?法?了. 但是对于年龄这个属性??. 他应该是?个数值. ?不是动作. 所以python就提供了这样?种机制. 通过?法来描述?个属性.

注意:

  • ?法参数只能有?个self
  • ?法上?要写@property
  • 调?的时候, 我们不需要写括号. 直接当成属性变量来?就可以了.
  • 这种套路只能取值. 不能设置值

五、私有属性

python的类中使用__xx(以双下划线开头,不能以双下划线结尾)来定义一个私有属性,定义的私有属性一般(除去使用特殊的方法)是从外面获取不到的。

class Foo:
    __c = 30                # 私有类变量
    def __init__(self):
        self.a = 10
        self.__b = 20       # 私有的实例变量

    def __func(self):       # 私有方法也跟私有变量一样
        print('私有方法')

f = Foo()
print(f.a)                  # 下面的都会报错
print(f.__b)                # AttributeError: 'Foo' object has no attribute '__b'
print(Foo.__c)              # AttributeError: type object 'Foo' has no attribute '__c'
f.__func()                  # AttributeError: 'Foo' object has no attribute '__func'
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇网友发给我一个游戏钓鱼网站,我.. 下一篇[项目实践] 使用相对路径引发的大..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目