python class 的学习

class Student(object):
    pass

类是抽象的模板。在上面的代码中,类student是从object继承而来的,object是所有类最终都会继承的类。

bart=Student()

创建bart实例

bart.name = 'Bart Simpson'

可以自由地给一个实例变量绑定属性。

class Student(object):

    def __init__(self, name, score):
        self.name = name
        self.score = score

注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去

bart = Student('Bart Simpson', 59)

和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数。除此之外,类的方法和普通函数没有什么区别,所以,你仍然可以用默认参数、可变参数和关键字参数。
注意:和静态语言不同,Python允许对实例变量绑定任何数据,也就是说,对于两个实例变量,虽然它们都是同一个类的不同实例,但拥有的变量名称都可能不同:
比如说:类中没有定义年龄这个变量,但是可以用bart.age=8赋予Student类实例bart的age属性。同时其他实例不会拥有这个变量

上面这个特性可以随便修改实例属性,这样就不能保证安全性了。类似于c++的私有变量,在python中,在属性名称前加两个下划线(——)就表示该变量是一个私有变量,则外部将不能再使用它。

注意:若变量名类是——aaa——,则表示这个变量是特殊变量,可以直接访问。

继承
当子类和父类都存在相同的run()方法时,我们说,子类的run()覆盖了父类的run(),这样当代码运行时,总是会调用子类的run(),即多态

对于一个变量,我们只需要知道它是Animal类型,无需确切地知道它的子类型,就可以放心地调用run()方法,而具体调用的run()方法是作用在Animal、Dog、Cat还是Tortoise对象上,由运行时该对象的确切类型决定,这就是多态真正的威力:调用方只管调用,不管细节,而当我们新增一种Animal的子类时,只要确保run()方法编写正确,不用管原来的代码是如何调用的。这就是著名的“开闭”原则:
对扩展开放:允许新增Animal子类;
对修改封闭:不需要修改依赖Animal类型的run_twice()等函数。

使用type()判断对象类型。

type(123)
import types
type('abc')==types.StringType

判断一个类对象的类型

h=husky()
isinstance(h,husky)

判断一个变量是否是某些类型的一种

isinstance("a",(str,unicode))

要获得一个对象的所有属性和方法,可以使用dir()函数,返回一个list

类似__xxx__的属性和方法在Python中都是有特殊用途的,比如__len__方法返回长度。在Python中,如果你调用len()函数试图获取一个对象的长度,实际上,在len()函数内部,它自动去调用该对象的__len__()方法,所以,下面的代码是等价的:

len('abc')
'abc'.__len__()

如果自己写的类也想使用len(myobj)的话,就自己写一个__len()__方法

class myobject(object):
	def __len__(self):
	return 100

python 廖雪峰官方网站学习:
https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00138682004077376d2d7f8cc8a4e2c9982f92788588322000

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值