面向对象设计—类和对象(二)(包含__call__方法,私有属性和私有方法,静态方法)(超详细的学习笔记)

一、__call__方法的对象

定义了__call__方法的对象,称为“可调用对象”,即__call__()方法能够让类的实例对象,像函数一样被调用

代码演示:

class count:
    def __init__(self,a):
        self.a=a
    def __call__(self,b):
        x=self.a+b
        print(x)
    def print(self):
        print (self.a)
Count=count("you")
Count.print()
Count(" are good")

结果:

you
you are good

补充:如果只看 Count(" are good") 是无法知道它是函数还是一个类实例;直接调用实例名也是__call__()方法起的作用。

二、私有属性和私有方法

注意要点:

(1)通常我们约定,两个下划线开头的属性是私有的。
(2)类内部可以访问私有属性(方法),类外部不能直接访问私有属性(方法)
(3)类外部可以通过“_类名__私有属性(方法)”访问私有属性(方法)

代码1:

class Employee:
    def __init__(self,name,age):
        self.name=name
        self.age=age
a=Employee("小明","20")
print(a.name)
print(a.age)

结果:

小明
20

如果对年龄进行私有的话:

class Employee:
    def __init__(self,name,age):
        self.name=name
        self.__age=age
a=Employee("小明","20")
print(a.name)
print(a.age)

结果:
在这里插入图片描述
如果想访问的话可以:

class Employee:
    def __init__(self,name,age):
        self.name=name
        self.__age=age
a=Employee("小明","20")
print(a.name)
print(a._Employee__age)#可以看上面注意要点内部红字

结果:

小明
20

代码2:

class Employee:
    def __init__(self,name,age):
        self.name=name
        self.__age=age
    def __count(self):
        print("中国速度")
a=Employee("小明","20")
print(a.name)
print(a._Employee__age)
a._Employee__count()

结果:

小明
20
中国速度

三、静态方法

要点:
1、Python中允许定义与:类对象,无关的方法,称为“静态方法”。
2、”静态方法“和模块中定义普通函数没有区别,著不过"静态方法"放到了“类的名字空间里面”,xuyaotongguo“类调用”。
3、静态方法通过装饰器@staticmethod来定义,格式如下:

@staticmethod
def 静态方法名([形参列表]):
      函数体

补充:

我总结我所有python笔记于一篇博客里:
点击即可进入Python学习笔记大总结(我把我所有python笔记做了总结和学习顺序,点击即可进入相关博客。希望可以便于你们阅读)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章