文档章节

Python类的重写和私有变量

p
 peizh
发布于 2017/11/07 22:30
字数 469
阅读 48
收藏 0

Python类的重写和私有变量

 

 

1、 类的重写

如果子类没有定义__init__()方法,子类初始化的时候就会调用父类的方法,但是当子类定义了__init__()方法,子类就不会调用父类的__init__()方法,

 

class ren(object):
    ren_name = 'ren'
    sex = 'F'
    def __init__(self,address,age):
        self.address = address
        self.age = age
        print('ren is {0}'.format(self.ren_name))
    def get_name(self):
        return self.name
    def get_sex(self):
        return self.sex


class child(ren):
    child_name = 'test'
    # sex = 'M'
    def __init__(self,address,age):
        super(child,self).__init__(address,age)
        # ren.__init__(self,address,age)
        print('my name is {0}'.format(self.child_name))
    def hello(self):
        print('hello world!')
    def get_name(self):
        print('todaoy is nice day.')



test = child('beijing',20)
test.hello()
test.get_name()
print(test.get_sex())
print(test.address)
print(test.age)

结果:

ren is ren

my name is test

hello world!

todaoy is nice day.

F

beijing

20

 

 

 

2、 类的私有变量

在Python中可以通过在属性变量名前加上双下划线定义属性为私有属性

_xx 以单下划线开头的表示的是protected类型的变量。即保护类型只能允许其本身与子类进行访问。

__xx 双下划线的表示的是私有类型的变量。只能允许这个类本身进行访问了,连子类也不可以用于命名一个类属性(类变量),私有变量,不允许进行实例化

__xx__定义的是特列方法。用户控制的命名空间内的变量或是属性,如init , __import__或是file 。

 

 

 

 

class A(object):

    _name = 'abc'

    __sec = 'F'

    def hello(self):

        print(self._name)

        print(self.__sex)



a = A()

print(a._name)

print(a.__sex)

结果:

abc

Traceback (most recent call last):

  File "C:/Users/admin/PycharmProjects/test/class/lei4.py", line 17, in <module>

    print(a.__sex)

AttributeError: 'A' object has no attribute '__sex'

 

 

 

class A(object):

    _name = 'abc'

    __sex = 'F'

    def hello(self):

        print(self._name)

        print(self.__sex)



a = A()

print(a._name)

a.hello()

结果:

abc

abc

F

 

class A(object):

    _name = 'abc'

    __sex = 'F'

    def hello(self):

        print(self._name)

        print(self.__sex)

    def get_sex(self):

        return self.__sex



a = A()

print(a._name)

a.hello()

print(a.get_sex())

结果:

abc

abc

F

F

 

© 著作权归作者所有

p
粉丝 2
博文 30
码字总数 17001
作品 0
闸北
私信 提问
学习笔记(11月07日)--类

四周二次课(11月7日) 一、 类的重写 1.1 重写一般方法 class A: def hello(self): print('Hello,i am A.')class B(A): passa = A()b = B()a.hello()b.hello() 结果: Hello,i am A.Hello,i......

wanyang_wanyang
2018/07/03
0
0
Python面向对象编程之我见

面向对象基本概念 面向对象是一种编程范式。范式是指一组方法论。编程范式是一组如何组织代码的方法论。编程范式指的是软件工程中的一种方法学。 一些主流的编程范式: OOP - 面向对象编程 ...

bigstone2012
2018/06/29
0
0
掌握面向对象编程本质,彻底掌握OOP

面向对象基本概念 面向对象是一种编程范式。范式是指一组方法论。编程范式是一组如何组织代码的方法论。编程范式指的是软件工程中的一种方法学。 一些主流的编程范式: OOP - 面向对象编程 ...

bigstone2012
2018/07/26
0
0
史上最全的Python面向对象知识点疏理

面向对象技术简介 类: 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类变量:类变量在整个实例化的对象中是公用的。类变量定义...

乐乎无趣
2017/11/03
42
0
python面向对象笔记(what)

python面向对象笔记(what) 1.什么是面向对象? 对象相当于把函数和全局变量封装起来,属相相当于全局变量,方法相当于函数。 不同对象相互隔离,全局变量互不影响。 2.什么是隐藏属性? 在方...

PowerMichael
2018/04/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

75、GridFS

GridFS是MongoDB提供的用于持久化存储文件的模块,CMS使用Mongo DB存储数据,使用FGridFS可以快速集成开发。 工作原理: 在GridFS存储文件是将文件分块存储,文件会按照256KB的大小分割成多个...

lianbang_W
18分钟前
2
0
js bind 绑定this指向

本文转载于:专业的前端网站➱js bind 绑定this指向 1、示例代码 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <title>bind函数绑定this指向......

前端老手
21分钟前
2
0
CentOS Linux 7上将ISO映像文件写成可启动U盘

如今,电脑基本上都支持U盘启动,所以,可以将ISO文件写到U盘上,用来启动并安装操作系统。 我想将一个CentOS Linux 7的ISO映像文件写到U盘上,在CentOS Linux 7操作系统上,执行如下命令: ...

大别阿郎
28分钟前
3
0
深入vue-公司分享ppt

组件注册 全局注册 注册组件,传入一个扩展过的构造器 Vue.component('my-component', Vue.extend({/*...*/})) 注册组件,传入一个选项对象(自动调用Vue.extend) Vue.component('my-comp...

莫西摩西
29分钟前
2
0
gitlab重置管理员密码

登录gitlab服务器 [root@localhost bin]# sudo gitlab-rails console productionLoading production environment (Rails 5.2.3)irb(main):001:0> u = User.where(email: 'admin@example.co......

King华仔o0
39分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部