2020-11-13

1377-王同学

发表文章数:14

热门标签

,
首页 » Python » 正文

Python基础知识(8)

私有属性

用私有属性进行封装

1.两个下划线开头的属性是私有属性,其他为公共属性

2.类内部可以访问私有属性

3.类外部不能直接访问私有属性

4.类外部可以通过’__类名__私有属性(方法)名‘访问私有属性

class Person:
    def work(s):
        print('{}要努力工作'.format(s))
    def __work(self):
        print('赚钱娶媳妇')



Person.work('小王')    #修改前

def work2():
    print('先学习吧!')

Person.work = work2      #把函数方法名作为对象进行修改,不加()
Person.work()            #修改后
print(Person._Person__work)

@property 装饰器

作用:将一个方法调用变属性调用

class Employee:
    def __init__(self,name,salary):
        self.__name = name     #设置为私有属性
        self.__salary = salary
    @property
    def salary(self):
        return self.__salary
    @salary.setter
    def salary(self,salary):
        if 2000<salary<20000:
            self.__salary = salary
        else:
            print('输入错误')
emp1 = Employee('wang',30000)
print(emp1.salary)
emp1.salary = -1000
print(emp1.salary)
emp1.salary = 10000
print(emp1.salary)


输出:
30000
输入错误
30000
10000

继承

python 支持多重继承,一个子类可以继承多个父类

语法格式:class 子类类名(父类1)

class person:
    def __init__(self,name,age):
        self.name = name
        self.__age = age    #私有属性
    def say_age(self):
        print('年龄,我也不知道')

class student(person):
    pass
s = student('wangzi',18)
s.say_age()
print(s.name)        #继承类可以直接调用父类的
print(s._person__age)    #对于私有属性,继承不可直接直接调用,仍需使用 ‘_类名__属性名’

输出:
年龄,我也不知道
wangzi
18

工厂模式

建立工厂大类,需要调用其中一部分可直接从工厂调用

# 测试工厂模式
class CarFactory:
    def creat_car(self,brand):
        if brand == '奔驰':
            return Benz()
        elif brand == '宝马':
            return BMW()
        else:
            return '其他品牌'

class Benz:
    pass
class BMW:
    pass

factory = CarFactory()
c1 = factory.creat_car('奔驰')
标签:

未经允许不得转载:作者:1377-王同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《2020-11-13》 发布于2020-11-13

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录