python类与对象

1,区别
类,类别,分门别类,人类,鸟类
对象,如int类下包含相似的不同个例,专业术语称为实例或对象
python中一切皆对象

2,类的创建
class Student:#类名有一个或多个单词组成,首字母大写,其他小写
pass

3,组成
类属性
实例方法
静态方法
类方法

class Student:
    place='shanghai' #直接写在类中的变量称为类属性
    def __init__(self,name,age):#初始化方法,赋值方法
        self.name=name #self.name称为实体属性,是赋值操作,将局部变量name的值赋给实体属性
        self.age=age
    #实例方法
    def eat(self):
        print('eating')
    #静态方法
    @staticmethod
    def method():
        print('我使用了staticmethod修饰,我是静态方法')
    #类方法
    @classmethod
    def cm(cls):
        print('我使用了classmethod修饰,我是类方法')

#在类之外定义的称为函数,类之内的称为方法
def drink():
    print('drinking')

#实例对象
s1=Student('Alice',12)
print(id(s1))
print(s1)
print('-----')
s1.eat() #对象名.方法名()
print(s1.name)
print('-----') 
Student.eat(s1)#同s1.eat(),类名.方法名()

#类属性的调用
print(Student.place)
s2=Student('Tom',15)
print(s1.place)
print(s2.place)
Student.place='beijing' #重新赋值
print(s1.place)
print(s2.place)
Student.cm() #类方法的调用
Student.method() #静态方法的调用


class Student:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def eat(self):
        print(self.name+'eating')

s1=Student('Alice',12)
s2=Student('Tom',12)
s1.gender='女' #为s1动态绑定性别属性,单独绑定
print(s1.name,s1.age,s1.gender)
print(s2.name,s2.age)
s1.eat()
s2.eat()
def show():
    print('定义在类之外称为函数')
s1.show=show #动态绑定show方法,单独绑定
s1.show()
class Student:
    def __init__(self,name,age):
        self.name=name
        self._age=age #不希望在外部被使用
    def show(self):
        print(self.name,self._age)
s1=Student('Alice',12)
s1.show()
#在外部使用
print(s1.name)
print(dir(s1))#查询可以访问
print(s1._Student__age) #靠程序员自觉
继承
class Person(object):
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def info(self):
        print('姓名:{0},年龄:{1}'.format(self.name,self.age))
class Student(Person):
    def __init__(self,name,age,score):
        super().__init__(name,age)
        self.score=score
    def info(self):
        super().info()
        print('学分:{0}'.format(self.score))
s1=Student('Alice',12,98)
s1.info()
python是动态语言,只需关心是否动态
class Animal(object):
    def eat(self):
        print('Animal can eat')
class Dog(Animal):
    def eat(self):
        print('dog eat meat')
class Cat(Animal):
    def eat(self):
        print('cat eat fish')
class Person:
    def eat(self):
        print('person eat different food')
def fun(obj):
    obj.eat()

fun(Cat())
fun(Dog())
fun(Animal())
fun(Person())



class A():
    pass
class B():
    pass
class C(A,B):
    def __init__(self,name,age):
        self.name=name
        self.age=age

x=C('Alice',20)
print(x.__dict__)#实例对象的实例字典
print(C.__dict__)#类对象返回类方法
print(x.__class__)#返回对象所属的方法
print(C.__bases__) #C类的父类元素
print(C.__mro__)#类的层次结构
print(C.__subclasses__())#子类列表

注意:
一个.py文件就是 一个模块(包含函数,类,语句)
多个模块组成程序,便于团队开发,模块复用
自定义模块
import math 导入所有
from math import pi 导入指定
from cale模块名 import add函数名
import cale

python程序—包---模块
包中包含__init__文件,目录中不包含
import 包名.模块名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值