胡Python02

 1.面向对象进阶

在前面的章节我们已经了解了面向对象的入门知识,知道了如何定义类,如何创建对象以及如何给对象发消息。为了能够更好的使用面向对象编程思想进行程序开发,我们还需要对Python中的面向对象编程进行更为深入的了解。

1.首先  我们先了解什么叫“私有变量”,在你变量名称前加上“——”。  私有变量不可继承,不可再外部调用但可以在内部调用。 

 2.@property装饰器

之前我们讨论过Python中属性和方法访问权限的问题,虽然我们不建议将属性设置为私有的,但是如果直接将属性暴露给外界也是有问题的,比如我们没有办法检查赋给属性的值是否有效。我们之前的建议是将属性命名以单下划线开头,通过这种方式来暗示属性是受保护的,不建议外界直接访问,那么如果想访问属性可以通过属性的getter(访问器)和setter(修改器)方法进行对应的操作

注意点:

     # 1. 装饰器名,函数名需要一致. 

    # 2. property需要先声明,再写setter,顺序不能倒过来

     # 3. 如果你希望一点变量只是被访问不能被修改,那么可以使用访问器@property

     # 4. 如果要修改访问器中的变量,可以搭建一个修改器,或者删除访问器

例题:输入三个数字(私有),求三个数字的和尝试更改其中俩个数字

代码如下:

class Number(object):
    def __init__(self,num1,num2,num3):
        self._num1 = num1
        self.__num2 = num2
        self.__num3 = num3
    @property
    def num1(self):
        print(self._num1)
    @num1.setter
    def num1(self.num):
        self._num1 = num
    def SUM(self):
        print(self._num1 + self.__num2 + self.__num3)
        
number = Number(1,2,3)
number.num1 = 1000
number.SUM()

例题:

import numpy as np
class email(object):
    def __init__(self):
        pass
    def zhuce(self):
        print("请输入邮件地址:")
        res = input('输入')
        print("邮件地址",res,"@163.com")
    def password(self):
        print("请输入密码:")
        mima = input('输入')
        print("请再次输入密码:")
        querenmima = input('输入')
        if mima == querenmima:
            print("密码设置成功")
        else:
            print("密码输入错误,请重新设置密码")
            
syx=email()
syx.zhuce()
syx.password()

 
 

在前面的章节我们已经了解了面向对象的入门知识,知道了如何定义类,如何创建对象以及如何给对象发消息。为了能够更好的使用面向对象编程思想进行程序开发,我们还需要对Python中的面向对象编程进行更为深入的了解。

1.首先  我们先了解什么叫“私有变量”,在你变量名称前加上“——”。  私有变量不可继承,不可再外部调用但可以在内部调用。 

 2.@property装饰器

之前我们讨论过Python中属性和方法访问权限的问题,虽然我们不建议将属性设置为私有的,但是如果直接将属性暴露给外界也是有问题的,比如我们没有办法检查赋给属性的值是否有效。我们之前的建议是将属性命名以单下划线开头,通过这种方式来暗示属性是受保护的,不建议外界直接访问,那么如果想访问属性可以通过属性的getter(访问器)和setter(修改器)方法进行对应的操作

注意点:

     # 1. 装饰器名,函数名需要一致. 

    # 2. property需要先声明,再写setter,顺序不能倒过来

     # 3. 如果你希望一点变量只是被访问不能被修改,那么可以使用访问器@property

     # 4. 如果要修改访问器中的变量,可以搭建一个修改器,或者删除访问器

例题:输入三个数字(私有),求三个数字的和尝试更改其中俩个数字

代码如下:

class Number(object):
    def __init__(self,num1,num2,num3):
        self._num1 = num1
        self.__num2 = num2
        self.__num3 = num3
    @property
    def num1(self):
        print(self._num1)
    @num1.setter
    def num1(self.num):
        self._num1 = num
    def SUM(self):
        print(self._num1 + self.__num2 + self.__num3)
        
number = Number(1,2,3)
number.num1 = 1000
number.SUM()

例题:

import numpy as np
class email(object):
    def __init__(self):
        pass
    def zhuce(self):
        print("请输入邮件地址:")
        res = input('输入')
        print("邮件地址",res,"@163.com")
    def password(self):
        print("请输入密码:")
        mima = input('输入')
        print("请再次输入密码:")
        querenmima = input('输入')
        if mima == querenmima:
            print("密码设置成功")
        else:
            print("密码输入错误,请重新设置密码")
            
syx=email()
syx.zhuce()
syx.password()

猜你喜欢

转载自www.cnblogs.com/zhangxiaoqian/p/11317756.html