mirror of
https://github.com/Hizenberg469/Python-tutorial.git
synced 2026-04-19 15:12:22 +03:00
almost done with OOP
This commit is contained in:
112
OOP/wiki.txt
Normal file
112
OOP/wiki.txt
Normal file
@@ -0,0 +1,112 @@
|
||||
-> class in python:
|
||||
|
||||
for ex:
|
||||
|
||||
class PlayerCharacter:
|
||||
#class object attributes
|
||||
membership = True
|
||||
def __init__(self, name, age):
|
||||
if( PlayerCharacter.membership):
|
||||
self.name = name #attributes
|
||||
self.age = age
|
||||
|
||||
def run(self):
|
||||
print('run')
|
||||
return 'done'
|
||||
|
||||
|
||||
player1 = PlayerCharacter('Cindy', 44)
|
||||
player2 = PlayerCharacter('Tom', 21)
|
||||
|
||||
|
||||
print(player1.name)
|
||||
print(player2.name)
|
||||
|
||||
|
||||
__init__: It's a dunder function.
|
||||
It's like constructor of class.
|
||||
It is defined for every class.
|
||||
|
||||
help(<object-name>): gives entire blueprint of the object
|
||||
help(<class-name>): gives entire blueprint of the object
|
||||
|
||||
class object attributes: its like a static data member of class
|
||||
|
||||
|
||||
-> @classmethod and @staticmethod:
|
||||
|
||||
for ex:
|
||||
class dummy:
|
||||
@classmethod
|
||||
def fun1(cls, param1, param2):
|
||||
...do something...
|
||||
|
||||
@staticmethod
|
||||
def fun1( param1, param2):
|
||||
...do something...
|
||||
|
||||
@classmethod and @staticmethod: Just like static member function
|
||||
of class in C++ except in @classmethod
|
||||
we use class attributes using 'cls'
|
||||
keyword which acts like a this pointer
|
||||
but in @staticmethod we can't do that.
|
||||
|
||||
-> private variable:
|
||||
|
||||
python doesn't provide any means to limit the access of data members
|
||||
of class. The only thing smart is to use convention.
|
||||
|
||||
Any variable with underscore means it's a private variable and
|
||||
don't modify it.
|
||||
|
||||
For ex:
|
||||
_name is private variable in a class.
|
||||
|
||||
|
||||
-> Inheritance:
|
||||
|
||||
For ex:
|
||||
|
||||
class User():
|
||||
def sign_in(self):
|
||||
print('logged in')
|
||||
|
||||
class Wizard(User):
|
||||
def __init__(self, name, power):
|
||||
self.name = name
|
||||
self.power = power
|
||||
|
||||
def attack(self):
|
||||
print(f'attacking with power of {self.power}')
|
||||
|
||||
class Archer(User):
|
||||
pass
|
||||
|
||||
wizard1 = Wizard()
|
||||
print(wizard1.sign_in())
|
||||
|
||||
-> isinstance function:
|
||||
|
||||
isinstance is a function to check if the instance belongs
|
||||
to a given class.
|
||||
|
||||
for ex:
|
||||
isinstance(<instance>, <class>)
|
||||
|
||||
-> Object class in python:
|
||||
|
||||
Every class inherits from Object class.
|
||||
|
||||
-> Polymorphism:
|
||||
|
||||
The child class have function with same name doing different
|
||||
functionality and the base class can also have same function
|
||||
name but the child class could overide those function to do
|
||||
its own functional logic
|
||||
|
||||
-> dir():
|
||||
|
||||
It specify what are the functions and variable the instance of
|
||||
a class(object) has access to.
|
||||
|
||||
-> Dunder methods:
|
||||
Reference in New Issue
Block a user