每日一篇,关于Python基础的认识。
今天学了些python基础语法的类相关内容,class 和java中的class类似,继承多态在python中同样是有的。
目前在学习python的过程中,让人感到郁闷的就是这个Tab和空格这个缩进距离这个东西,莫名其妙的一直报错。。。最后在pycharm中重新配置了下,算是搞定了,因为很多格式不一样,导致的。就是麻烦了点
先说说类:class (object) (class、object小写)
object,所有的类最终都会继承的类。。。类似java Object。代码都是相通的。。。在这里不言而喻的体现了出来
# __init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,
# 就可以把各种属性绑定到self,因为self就指向创建的实例本身。有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传
# 入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去:
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
def get_grade(self):
if self.score >= 90:
return 'A'
elif self.score >= 60:
return 'B'
else:
return 'C'
# 示例
lisa = Student('Lisa 成绩 =', 99)
bart = Student('Bart 成绩 =', 59)
eee = Student('liuliu 成绩 =',60)
print(lisa.name, lisa.get_grade())
print(bart.name,bart.get_grade())
print(eee.name,eee.get_grade())
# 上述代码的思想,总感觉类似于java中get/set javabean写法,只是更精简,具体还没摸得太清楚
# 扩展
# 如果在 def __init__ 方法中吧 self.name修改成===》self.__name 则私有化,不可被外部直接调用,类似于java中的private属性
# 测试
# 请把下面的Student对象的gender字段对外隐藏起来,用get_gender()和set_gender()代替,并检查参数有效性:
class People(object):
def __init__(self, name, age):
self.name = name
self.__age = age
def get_gender(self):
if self.__age == 15:
print('哈哈哈')
elif self.__age == 16:
print('嘘嘘嘘')
luce = People('111',12)
#print('年龄:'+luce.__age) #反例证明不可直接调用 报错
print('name:'+luce.name) #可直接调用
在说说 继承和多态吧,这个看下面的代码就可以看懂,跟JAVA 类似
# 拿上面的例子来做吧
class Student2(Student):
pass
sssss=Student2('xxx',90)
print(sssss.get_grade()) # 这里调用的是Student的里面的get_grade函数
接下来 ,说一下如何去获取 对象的类型信息 type()函数
print(type(123))
print(type(False))
print(type('==='))
print(type("12---"))
最后提一下这个,实例属性和类属性 ,基本上就是赋值的一个过程,体会一下,没什么难度
class Students(object):
score = 20
sr=Students
print(sr.score)
print(Students.score)
sr.score=30
print(sr.score)
print(Students.score)
Students.score=40
print(sr.score)
print(Students.score)
学习python已经不知不觉4天了,基本的思想基本上有了,python目前在我看来,就是精简,效率。跟java上的语法区别还是蛮大的,但是路数基本一样
加油!20180703 下午