Python 类及成员的访问权限

举个例子:

class Test
    def __init__(self):
        self.__value = 5

    def getValue(self):
        return self.__value

_foo _:函数前后各一个下划线,定义的特殊方法,一般是系统定义名字。类似 _init _
_foo:以单下划线开头表示protected类型的变量,即保护类型
_ _ foo:以双下环线开头的开始,表示私有类型变量

Python中继承中有一些特点:

  1. 在继承中基类的初始化方法__init__() 不会被自动调用,它需要在其派生类的构造中亲自专门调用
  2. 在调用基类方法时,需要使用super()前缀
  3. Python总是首先查找对应类型的方法,不能再派生类中找到对应的方法时,他才开始到基类中逐个查找

对比一个C++例子和Python的例子:
C++

class Person {
public:
	Person(std::string name, int age, float height) {
		this->name = name;
		this->age = age;
		this->height = height;
	}
	std::string getName() {
		return name;
	}

	int getAge() {
		return age;
	}

	void showInfo() {
		printf("name:", name);
		printf("age:", age);
		printf("height:", height);
		printf("visit:", visit);
		Person::visit++;
	}
public:
	static int visit;

protected:
	std::string name ="";
	int age = 0;
	float height = 0.0;
};

class Teacher :public Person {
	Teacher(std::string name, int age, float height)
		:Person(name, age, height) {

	}

	std::string getTitle() {
		return title;
	}
	void setTitle(std::string title) {
		this->title = title;
	}

	void showInfo() {
		printf("title:",title);
		Person::showInfo();
	}
private:
	std::string title;
};

int Person::visit = 0;

Python



class Person:
    visit = 0
    def __init__(self,name,age,height):
        self._name = name
        self._age = age
        self._height = height

    def getName(self):
        return self._name

    def getAge(self):
        return self._age

    def showInfo(self):
        print("name:", self._name)
        print("age:", self._age)
        print("height:", self._height)
        print("visit:", self.visit)
        Person.visit = Person.visit + 1

class Teacher(Person):
    def __init__(self,name,age,height):
        super().__init__(name,age,height)
        self.__title = None

    def getTitle(self):
        return self.__title

    def setTitle(self,title):
        self.__title = title

    def showInfo(self):
        print("title:",self.__title)
        super().showInfo()

def Test():
    tom = Person("Tom",25,172.2)
    tom.showInfo()

    jerry = Teacher("Jerry",36,180.3)
    jerry.showInfo()

Test()

aaa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wb175208

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值