为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
c#里面的委托 fun(int a,int b,Func<int,int,float>){...}
期待出高级进阶啊! 网络和多线程,多进程!
self.job = job ,这么写不好,如果有个实例第四个属性不是job:xiaohong= Person('Xiao Hong', 'Male', '1990-1-1', studno='50') ,那这样就有麻烦了,就要在__init__再加一个属性studno。实例多了,不同的属性也就多了,麻烦就大了
可见,只有以双下划线开头的"__job"不能直接被外部访问。
但是,如果一个属性以"__xxx__"的形式定义,那它又可以被外部访问了,以"__xxx__"定义的属性在Python的类中被称为特殊属性,有很多预定义的特殊属性可以使用,通常我们不要把普通属性用"__xxx__"定义。
以单下划线开头的属性"_xxx"虽然也可以被外部访问,但是,按照习惯,他们不应该被外部访问。
Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问。看例子:

已采纳回答 / PengCheng
如果你一定要这么写的话,那就这样写。count=0class Person(object):    def __init__(self,name):              global count        count=count +1        self.name=namep1 = Person('Bob')print countp2 = Person('Alice')print countp3 = Person('Tim')print count

最新回答 / zh_414
可以啊。你这代码也不全啊,怎么查看问题。你确定你单引号里的内容是以数组的形式写入的吗
class Person(object):
def __init__(self,name,gender,birth,job=None):
self.name = name
self.gender = gender
self.birth = birth
self.job = job

xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student')

print xiaoming.name
print xiaoming.job
def cmp_ignore_case(s1, s2):
u1 = s1.upper()
u2 = s2.upper()
if u1 < u2:
return -1
if u1 > u2:
return 1
return 0
print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
直接用Linux不就完了,又简单又好用
from __future__ import unicode_literals

s = u'am I an unicode?'
print isinstance(s, unicode)

字符串统一为unicode,不需要加前缀u的嘛,为啥示例必需加上u才能通过
def format_name(s):
return s.capitalize()

print map(format_name, ['adam', 'LISA', 'barT'])
def format_name(s):
return s.lower().capitalize()
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消