美文网首页
Python基础总结13(类和对象)

Python基础总结13(类和对象)

作者: zxhlcl | 来源:发表于2018-10-18 16:54 被阅读0次

一、静态方法和类方法

1、类方法
@classmethod
def func(cls): -->其中cls指向类
应用场景:
2、静态方法
@staticmethod
def func( ):

应用场景:
1、实现函数的功能需要用到对象的属性,申明为对象方法
2、需要用到类的属性,申明为类方法
3、不需要用到对象以及类的属性和方法,直接申明为函数,就是静态方法

class MyMath:
    pi=3.141952653

    @classmethod
    def circle(cls,radis):
        return cls.pi*radis**2

    @staticmethod
    def sum(num1,num2):
        return num1+num2

mathone=MyMath()
print(mathone.circle(10),MyMath.circle(10))
print(mathone.sum(10,20),MyMath.sum(10,20))

二、私有化

类中的内容默认的是公开的
1、私有化--将类的内容在类的外面隐藏
方法:在类的方法或属性前面加两个下划线
2、私有化原理
python中没有真正的私有化(没有从访问权限上去限制内容的访问)
在私有的属性名或方法名前加前缀"_类名"来阻止外部直接通过带两个下划线的名字去使用属性和方法
相当于系统修改了属性或方法的名字

class Person:

    __hiddenname="Joke"

    def __init__(self):
        self.name="小明"
        self.age=22

    def show_info(self):
        print(self.__dict__)

    def __find(self):
        print("find money")

p1=Person()
p1.show_info()
p1._Person__find()
'''
{'name': '小明', 'age': 22}
find money
'''

三、getter和setter

1、应用场景:
如果希望通过对象.属性获取属性值之前,再干点别的事情,可以给这个属性添加getter
如果希望在通过对象.属性给属性赋值之前,再干点别的事情,可以给这个属性添加setter

2、怎么添加setter和getter
getter:
(1)在属性名前加_
(2)添加属性对应的getter
@property
def 属性名(self):
    函数体
(3)使用属性值的时候,通过没有带下划线的属性
setter:
如果要想添加setter必须先添加getter
@getter名.setter
def 属性名(self,参数):
  做别的事情
  self.属性名=处理后的值

class Number:

    def __init__(self):
        self.id=None
        self._week=3
        self.value=0
        self.type=int

    @property
    def week(self):
        if self._week==1:
            return "星期一"
        elif self._week==2:
            return "星期二"
        elif self._week==3:
            return "星期三"
        elif self._week==4:
            return "星期四"
        elif self._week==5:
            return "星期五"
        elif self._week==6:
            return "星期六"
        elif self._week==0:
            return "星期天"
    @week.setter
    def week(self,week):
        try:
            if not isinstance(week,int):
                raise TypeError("Expected a int")
            if not 0 <= week <= 6:
                raise ValueError("Expected a int number for 1 to 6")
        except (TypeError,ValueError) as e:
            print("You are a stupid guy!-->",e)
        else:
            print("A correct Number ,you are a smart guy")
            self._week=week

Num=Number()
print(Num.week)
Num.week="aaa"
print(Num.week)
Num.week=8
print(Num.week)
Num.week=5
print(Num.week)
'''
星期三
You are a stupid guy!--> Expected a int
星期三
You are a stupid guy!--> Expected a int number for 1 to 6
星期三
A correct Number ,you are a smart guy
星期五

'''

相关文章

  • Python基础总结13(类和对象)

    一、静态方法和类方法 1、类方法@classmethoddef func(cls): -->其中cls指向...

  • python语法入门五

    类和对象 类和对象 基础 继承:python为多继承 类、类对象和实例对象 当实例对象声明后,再删除类对象,那么该...

  • python基础总结12(类和对象基础)

    一、面向对象编程 什么是面向对象编程??1、面向过程编程(逻辑思维)依赖于算法和逻辑,用代码逐句把功能实现2、函数...

  • Python基础总结(五)(类和对象)

    self参数 类中定义的每个方法的第一个参数都是self,这个参数指向调用方法的对象本身(你可以给它指定任何一个名...

  • python重要知识点总结一

    内容包含: 元类 python 对象和类的绑定以及类方法,静态方法 python 子类调用父类方法总结 pytho...

  • Python基础 - 类和对象

    知识回顾 1.类:拥有相同属性和相同功能的对象的集合 属性:存储数据(对象属性,类的字段)功能:方法(对象方法,类...

  • Python基础 - 类和对象

    面向对象编程 编程思想 1.面向过程编程 --> 算法,逻辑 2.函数式编程 --> 函数,模块 3....

  • Python面向对象之访问控制!

    回顾 在Python进阶记录之基础篇(十五)中,我们介绍了面向对象的基本概念以及Python中类和对象的基础知识,...

  • 三、python面向对象

    1.面向对象基础 类和对象(类和实例) 其实python面向对象的概念和c++、java等高级语言没什么区别,只是...

  • python自定义功能之面向对象

    本章主要内容 类与对象 定义和使用类 类的属性和方法 类的继承 类的方法重载 总结: python中的类与对象与J...

网友评论

      本文标题:Python基础总结13(类和对象)

      本文链接:https://www.haomeiwen.com/subject/wsjszftx.html